class-dump的安裝
系統(tǒng):macOS High Sierra 版本 10.13.1
首先下載class-dump。下載地址
下載完成后得到一個.dmg
包文件并雙擊打開(根據(jù)下載文件的不同得到的包也不同)。
class-dump.png
打開此文件后,按照《iOS應用逆向工程》這本書上的要求,需要將此class-dump文件移到
/usr/bin
文件夾下。但是由于新的macOS系統(tǒng)不允許訪問該文件夾宣旱,因此,采用下面的方法:
- 首先在根目錄下新建文件夾專門用于存放自己下載的工具:
mkdir ~/bin
- 然后將class-dump移動到該文件夾下并賦予它可執(zhí)行權(quán)限:
mv class-dump ~/bin
chmod 777 ~/bin/class-dump
- 配置全局環(huán)境變量叛薯,使用編輯器打開profile文件:
vim ~/.bash_profile
- 在文件最上方添加如下一行:
export PATH=$HOME/bin/:$PATH
- 在終端執(zhí)行
source ~/.bash_profile
至此浑吟,安裝class_dump已經(jīng)全部完成。
可以在終端直接輸入class-dump命令測試一下:
測試
class-dump的使用
使用class-dump可以得到目標對象的class信息耗溜。它是利用OC的Runtime特性组力,將存儲在Mach-O文件中的頭文件信息提取出來,并生成對應的.h文件抖拴。通過生成的.h文件燎字,我們可以分析該App實現(xiàn)的大致思路以及關(guān)鍵的類對應的功能,從而進一步進行逆向工作阿宅。
下面就以一個IPA包為例候衍,演示如何使用class-dump工具分析出對應的頭文件。假定得到的包已經(jīng)脫殼家夺。
對于一個IPA包脱柱,首先需要使用解壓工具或者歸檔工具將它變成.app文件。要注意的是拉馋,對于.app文件榨为,可以通過右鍵-顯示包內(nèi)容查看它惨好,也可以通過終端直接cd進去,在class-dump時随闺,就是要通過終端cd進入.app包內(nèi)日川。
- 將IPA包放到任意文件夾下。本例中以一個2048應用包為例矩乐。
- 進入IPA對應的.app包內(nèi)龄句,使用plutil工具查看該IPA包對應的可執(zhí)行文件名稱:
plutil -p Info.plist | grep CFBundleExecutable
- 得到可執(zhí)行文件名稱“m2048”后,使用class-dump導出該應用程序的頭文件到指定文件夾下:
class-dump -S -s -H m2048 -o ~/Documents/working/IPA/2048/headers/
-
查看導出的頭文件散罕,根據(jù)頭文件進行進一步逆向分歇。
導出的頭文件
下面是一些常用的class-dump選項:
- -a :顯示實例的方法以及變量。
- -A :顯示運行時類所在的地址欧漱。
- -f <str>:顯示包含或者匹配str的方法名职抡。
- -H :在當前文件夾生成所有的頭文件。后接-o參數(shù)表示在其它文件夾生成误甚。
- -I :根據(jù)繼承關(guān)系對類缚甩、類別和接口進行排序。會覆蓋 -s窑邦。
- -s :根據(jù)名稱對類擅威、類別進行排序。
- -S :根據(jù)名稱對方法名進行排序冈钦。