一榨惠、介紹及安裝
1.簡介
class-dump就是用來dump目標(biāo)對象的class信息的工具。它利用OC語言的runtime特性憾赁,將存儲在Mach-O文件中的頭文件信息提取出來污朽,并生成對應(yīng)的.h文件。
2.安裝
2.1 在http://stevenygard.com/projects/class-dump下載最新版的class-dump安裝包龙考。
2.2 雙擊安裝包 -> 將文件里的class-dump復(fù)制到"/usr/local/bin"目錄下 -> 打開終端蟆肆,執(zhí)行”sudo chmod 777 /usr/local/bin/class-dump“命令賦予其執(zhí)行權(quán)限矾睦。
2.3 運(yùn)行class-dump(即在命令行直接輸入class-dump命令)即可看到相關(guān)參數(shù)。
二炎功、用法
1.將需要class-dump的.app文件(測試時可直接從Xcode的Products直接拿)拷貝到指定位置目錄下枚冗,如/User/Desktop/test/test.app
2.獲取應(yīng)用程序的包名:
2.1 如果是自己的測試應(yīng)用,肯定已經(jīng)知道包含是什么蛇损,則不再需要執(zhí)行2.2的操作赁温。
2.2 非自己的測試應(yīng)用時,從終端進(jìn)入到.app目錄下(cd /User/Desktop/test/test.app/) -> 使用Xcode自帶的plutil命令工具查看包名(plutil -p Info.plist | grep CFBundleExecutable) -> 得到包名淤齐。
3.dump應(yīng)用程序股囊,獲取所有頭文件:
把前面應(yīng)用的頭文件class-dump到指定目錄下(如:/User/Desktop/test/path/headers/),并將頭文件內(nèi)容按名字排序(class-dump -S -s -H 包名 -o /User/Desktop/test/path/headers/)
三床玻、總結(jié)
1.通過對比我們可以看到class-dump出來的頭文件與我們的應(yīng)用源頭文件幾乎一樣毁涉,可能參數(shù)有細(xì)小的區(qū)別沉帮,排序后的可讀性也更高锈死。
2.class-dump不僅可以提取自己的app里的頭文件,也可以提取別人app里面的頭文件穆壕,但是現(xiàn)在的應(yīng)用中引用了大量的第三方框架待牵,而class-dump出來的頭文件是包括所有的,所以分析起來比較困難喇勋,需要結(jié)合其它方式來進(jìn)一步縮小目標(biāo)范圍缨该。
3.需要注意的是:從Appstore下載的app都是經(jīng)過加密的,可執(zhí)行文件被加上了一層外殼川背,class-dump無法直接作用于這樣的文件贰拿。需要使用其它方式將外殼破壞才可以。
/* 本文參考《iOS應(yīng)用逆向工程》一書所進(jìn)行的總結(jié)熄云,所有步驟經(jīng)過親自驗(yàn)證膨更,可能與書中有微小的出入 */