? ? ? 在逆向過程中,如果想分析一個(gè)應(yīng)用中類的組成以及類中有哪些方法,可以利用class-dump導(dǎo)出類的頭文件和頭文件中的方法,不過在class-dump前,必須要先將應(yīng)用砸殼,比如用dumpdecrypted來進(jìn)行砸殼操作,然后導(dǎo)出砸殼后的應(yīng)用。
一、class_dump簡介
? ? ? class-dump是一個(gè)命令工具,可以對(duì)砸殼后的二級(jí)制文件進(jìn)行分析,導(dǎo)出頭文件,其原理是根據(jù)應(yīng)用的MACH-O文件中類和方法信息,將應(yīng)用中的類和方法導(dǎo)出來的。
class-dump下載地址:https://github.com/nygard/class-dump
二、class-dump編譯
下載完class-dump的源文件以后,用xcode打開文件,然后選擇class-dump運(yùn)行,如下圖所示:

然后在product文件中找到編譯后的二進(jìn)制文件,如下圖所示:

這樣就得到了class-dump的可執(zhí)行文件了。
三、class-dump的使用
得到class-dump的可執(zhí)行文件以后,就可以導(dǎo)出應(yīng)用的類的頭文件了
我使用的命令如下:
~/Documents/class-dump -s -S -H --arch arm64 ~/Desktop/WeChat.decrypted -o? ~/Desktop/header6.3-arm64

以下是?class-dump [options]選項(xiàng)的參數(shù)含義
-a? 顯示實(shí)例變量偏移
-A? 顯示實(shí)現(xiàn)地址
–arch選擇一個(gè)指定的架構(gòu),如ppc, ppc7400, ppc64, i386, x86_64
-C只顯示同正則表達(dá)式匹配的類
-f在方法名中查找字符串
-H? 在當(dāng)前目錄生成頭文件,或者在用-o選項(xiàng)指定的目錄生成
-I? ? 對(duì)類,目錄,協(xié)議 按照繼承關(guān)系(inheritance)進(jìn)行排序(覆蓋-s選項(xiàng))
-o為-H選項(xiàng)指定輸出目錄
-r? 遞歸擴(kuò)展framework,并修復(fù)VM共享庫
-s? 按名稱對(duì)classes和categories進(jìn)行排序
-S? 按名稱對(duì)方法(method)進(jìn)行排序
四、class-dump結(jié)果(微信為例)

隨意打開一個(gè)頭文件,內(nèi)容如下:

參考:
https://github.com/nygard/class-dump
http://www.cnblogs.com/zxtx/articles/2307100.html