之前都是一直在學(xué)習(xí)Android,最近因?yàn)橐馔饨佑|到了蘋果系統(tǒng),打算跟著非蟲大大的書學(xué)習(xí)下這方面的知識(shí)猿推。
編譯環(huán)境就不介紹了洪囤,我自己使用的是macOS Hign Sierra。
一救赐、自己第一個(gè) macOS 程序
代碼很簡(jiǎn)單,就是輸入字符,如果等于123就輸出Hello world掏缎,否則提示錯(cuò)誤。
接下來(lái)使用clang編譯程序煤杀,編譯成功后會(huì)在當(dāng)前目錄生成一個(gè)可執(zhí)行文件:
運(yùn)行一下可以看到功能ok眷蜈,自己的第一個(gè)Mac“應(yīng)用”誕生啦。
二沈自、分析可執(zhí)行文件
這里工具我使用的是Hopper酌儒,因?yàn)椴榱瞬橘Y料,這款應(yīng)用對(duì)mac軟件的支持較好枯途。但也有介紹說(shuō)其反匯編出來(lái)的邏輯存在缺陷忌怎。不過(guò)我們的目的是快速上手練習(xí),還不到糾結(jié)于工具的時(shí)候柔袁。
等待分析完成呆躲,可以看到和IDA類似的UI界面。代碼比較少捶索,我們直接拖動(dòng)就能找到位置插掂。
之前的學(xué)習(xí)中,已經(jīng)接觸過(guò)一些arm匯編指令腥例。雖然這里有所不同辅甥,但我們憑借經(jīng)驗(yàn)還是很容易就會(huì)注意到以下幾行。
首先調(diào)用了scanf方法燎竖,然后和0x7b也就是十進(jìn)制的123的進(jìn)行比較璃弄,最后通過(guò)je來(lái)控制跳轉(zhuǎn)流程。跳轉(zhuǎn)的目標(biāo)地址正好是輸出hello world的代碼段构回。
三夏块、修改邏輯
前面我們找到了控制跳轉(zhuǎn)的地方疏咐,現(xiàn)在想要實(shí)現(xiàn)的是無(wú)論我們輸了什么,程序都會(huì)輸出Hello world!脐供。
有幾種方式浑塞,這里只用最簡(jiǎn)單的一種。讓程序直接跳轉(zhuǎn)至輸出Hello world的代碼段政己。然后保存為新的可執(zhí)行文件cm02酌壕。
四、驗(yàn)證
運(yùn)行一下我們新生成的可執(zhí)行文件cm02歇由,然后輸入任意的字符卵牍,修改過(guò)的程序順利的輸出了Hello world!。
五沦泌、小結(jié)
萬(wàn)事開頭難糊昙,第一次接觸Mac平臺(tái)的軟件,寫一個(gè)簡(jiǎn)單的crackme來(lái)練練手赦肃。發(fā)現(xiàn)跟之前做的東西還是有相通的地方溅蛉,但是路才剛剛開始。