前言
iOS逆向中使用Hopper可以幫助我們分析目標APP的方法地址來實現動態調試,本文只是簡單介紹一個Hopper的基本用法
下載Hopper
Hopper目前在最新的Mac系統上沒有破解版,每次可以試用半小時,不過對于一般的分析也是夠用了,這里貼一下Hopper的官網Hopper
分析目標APP
這里主要是用自己新建的Demo用來分析,我Demo里就寫了兩個方法
image.png
工程編譯之后把.app文件拖到Hopper的窗口
image.png
然后點擊OK就行了
image.png
然后就可以進行分析了,我首先是在viewdidload里加了斷點
image.png
可以先用image list 打印文件的基地址,由于iOS的ASLR特性,需要用基地址來計算其他地址,上圖第一條就是可執行文件加載的基地址
image.png
上圖右邊Hopper選中的部分是say方法的地址,不過這里自己新建的工程拉到Hopper里面Hopper也有一個基地址0x100000000
可以在控制臺用p/x
指令計算一下say方法的實際地址,計算方法是(可執行文件的基地址+Hopper中方法的偏移-Hoper加載的基地址),計算出結果后用b
指令下斷點,可以看到已經對say方法下了斷點了,這時候讓程序繼續執行就會斷到say方法了
截屏2020-03-04下午5.02.28.png
截屏2020-03-04下午5.11.27.png
選中Always Show Disassembly之后就可以看到匯編代碼了
截屏2020-03-04下午5.01.41.png
Xcode的匯編代碼和Hopper的匯編代碼相差的就是基地址了
Hopper和MachOView
MachO文件是iOS的可執行文件,里面的地址也可以跟Hopper反匯編出來的對應
截屏2020-03-04下午5.10.07.png
截屏2020-03-04下午5.15.02.png
Hopper還有很多用法,我這里只是做個基本的介紹。我是逆向初學者,如果文中有什么不對的地方,歡迎各位提出寶貴意見。