前言
iOS逆向中使用Hopper可以幫助我們分析目標(biāo)APP的方法地址來(lái)實(shí)現(xiàn)動(dòng)態(tài)調(diào)試,本文只是簡(jiǎn)單介紹一個(gè)Hopper的基本用法
下載Hopper
Hopper目前在最新的Mac系統(tǒng)上沒有破解版下硕,每次可以試用半小時(shí)线梗,不過(guò)對(duì)于一般的分析也是夠用了,這里貼一下Hopper的官網(wǎng)Hopper
分析目標(biāo)APP
這里主要是用自己新建的Demo用來(lái)分析睡榆,我Demo里就寫了兩個(gè)方法
工程編譯之后把.app文件拖到Hopper的窗口
然后點(diǎn)擊OK就行了
然后就可以進(jìn)行分析了萍肆,我首先是在viewdidload里加了斷點(diǎn)
可以先用image list 打印文件的基地址袍榆,由于iOS的ASLR特性,需要用基地址來(lái)計(jì)算其他地址塘揣,上圖第一條就是可執(zhí)行文件加載的基地址
上圖右邊Hopper選中的部分是say方法的地址包雀,不過(guò)這里自己新建的工程拉到Hopper里面Hopper也有一個(gè)基地址0x100000000
可以在控制臺(tái)用p/x
指令計(jì)算一下say方法的實(shí)際地址,計(jì)算方法是(可執(zhí)行文件的基地址+Hopper中方法的偏移-Hoper加載的基地址)亲铡,計(jì)算出結(jié)果后用b
指令下斷點(diǎn)才写,可以看到已經(jīng)對(duì)say方法下了斷點(diǎn)了,這時(shí)候讓程序繼續(xù)執(zhí)行就會(huì)斷到say方法了
選中Always Show Disassembly之后就可以看到匯編代碼了
Xcode的匯編代碼和Hopper的匯編代碼相差的就是基地址了
Hopper和MachOView
MachO文件是iOS的可執(zhí)行文件,里面的地址也可以跟Hopper反匯編出來(lái)的對(duì)應(yīng)
Hopper還有很多用法吆鹤,我這里只是做個(gè)基本的介紹厨疙。我是逆向初學(xué)者,如果文中有什么不對(duì)的地方疑务,歡迎各位提出寶貴意見沾凄。