class-dump簡介? ? ? ?
class-dump就是提取目標對象的class信息的工具说订,利用了Objective-C的runtime特性桅狠,將存儲在Mach-O文件夾中的頭文件信息提取出來,生成對應的.h文件趴荸。需要注意的是我們從App Store下載的APP是經(jīng)過加密的儒溉,在可執(zhí)行文件上加了一層“殼”,我們的class-dump是不能處理這種文件的发钝,需要先用其他工具來砸殼顿涣,才能使用。
安裝class-dump
下載地址:http://stevenygard.com/projects/class-dump/
下載class-dump-3.5.dmg,下載完成后酝豪,將dmg文件里的class-dump復制到"/usr/local/bin"下涛碑,然后打開終端,輸入“sudo chmod 777 /usr/local/bin/class-dump”,給class-dump賦予執(zhí)行權(quán)限孵淘。此時在終端運行class-dump命令蒲障,看到下圖,就表示安裝成功
class-dump的使用
class-dump的對象是Mach-O格式的二進制文件瘫证,比如Farmework的庫文件和可執(zhí)行文件揉阎。在class-dump一個對象的時候,首先要找到這個對象的可執(zhí)行文件目錄痛悯,在Xcode中的位置如圖:
使用我們可以借助Xcode自帶的plutil工具查看info.plist中的CFBundleExecutable字段余黎。先將.ipa的文件后綴改為.zip,然后解壓载萌,在終端cd 到這個解壓文件中的.app文件惧财,然后執(zhí)行plutil -p Info.plist | grep CFBundleExecutable,效果如圖:
最后得到的"wmcw"就是APP的可執(zhí)行文件扭仁,然后就是對可執(zhí)行文件進行class-dump,并將頭文件內(nèi)容按照名字排序垮衷。命令如下:class-dump -S -s -H wmcw -o /Users/zhaoyongsheng/Desktop/Payload 執(zhí)行完畢后打開/Users/zhaoyongsheng/Desktop/Payload文件夾,效果如圖:
好了乖坠,現(xiàn)在去對比一下自己源碼的頭文件和class-dump頭文件的差別吧搀突,你會發(fā)現(xiàn)參數(shù)類型被改成了id,參數(shù)名用arg1,arg2等替換了,其他的基本是一樣的熊泵。