iOS逆向工程-OSX工具集之class-dump

一、介紹及安裝

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 運行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)過親自驗證,可能與書中有微小的出入 */

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容