class-dump的安裝與使用

class-dump的安裝

系統(tǒng):macOS High Sierra 版本 10.13.1
首先下載class-dump。下載地址
下載完成后得到一個(gè).dmg包文件并雙擊打開(根據(jù)下載文件的不同得到的包也不同)。

class-dump.png

打開此文件后,按照《iOS應(yīng)用逆向工程》這本書上的要求,需要將此class-dump文件移到/usr/bin文件夾下。但是由于新的macOS系統(tǒng)不允許訪問(wèn)該文件夾,因此,采用下面的方法:

  1. 首先在根目錄下新建文件夾專門用于存放自己下載的工具:
    • mkdir ~/bin
  2. 然后將class-dump移動(dòng)到該文件夾下并賦予它可執(zhí)行權(quán)限:
    • mv class-dump ~/bin
    • chmod 777 ~/bin/class-dump
  3. 配置全局環(huán)境變量,使用編輯器打開profile文件:
    • vim ~/.bash_profile
  4. 在文件最上方添加如下一行:
  • export PATH=$HOME/bin/:$PATH
  1. 在終端執(zhí)行source ~/.bash_profile

至此,安裝class_dump已經(jīng)全部完成。
可以在終端直接輸入class-dump命令測(cè)試一下:


測(cè)試

class-dump的使用

使用class-dump可以得到目標(biāo)對(duì)象的class信息。它是利用OC的Runtime特性,將存儲(chǔ)在Mach-O文件中的頭文件信息提取出來(lái),并生成對(duì)應(yīng)的.h文件。通過(guò)生成的.h文件,我們可以分析該App實(shí)現(xiàn)的大致思路以及關(guān)鍵的類對(duì)應(yīng)的功能,從而進(jìn)一步進(jìn)行逆向工作。

下面就以一個(gè)IPA包為例,演示如何使用class-dump工具分析出對(duì)應(yīng)的頭文件。假定得到的包已經(jīng)脫殼。

對(duì)于一個(gè)IPA包,首先需要使用解壓工具或者歸檔工具將它變成.app文件。要注意的是,對(duì)于.app文件,可以通過(guò)右鍵-顯示包內(nèi)容查看它,也可以通過(guò)終端直接cd進(jìn)去,在class-dump時(shí),就是要通過(guò)終端cd進(jìn)入.app包內(nèi)。

  1. 將IPA包放到任意文件夾下。本例中以一個(gè)2048應(yīng)用包為例。
  2. 進(jìn)入IPA對(duì)應(yīng)的.app包內(nèi),使用plutil工具查看該IPA包對(duì)應(yīng)的可執(zhí)行文件名稱:
    • plutil -p Info.plist | grep CFBundleExecutable
  3. 得到可執(zhí)行文件名稱“m2048”后,使用class-dump導(dǎo)出該應(yīng)用程序的頭文件到指定文件夾下:
    • class-dump -S -s -H m2048 -o ~/Documents/working/IPA/2048/headers/
  4. 查看導(dǎo)出的頭文件,根據(jù)頭文件進(jìn)行進(jìn)一步逆向。


    導(dǎo)出的頭文件

下面是一些常用的class-dump選項(xiàng):

  • -a :顯示實(shí)例的方法以及變量。
  • -A :顯示運(yùn)行時(shí)類所在的地址。
  • -f <str>:顯示包含或者匹配str的方法名。
  • -H :在當(dāng)前文件夾生成所有的頭文件。后接-o參數(shù)表示在其它文件夾生成。
  • -I :根據(jù)繼承關(guān)系對(duì)類、類別和接口進(jìn)行排序。會(huì)覆蓋 -s。
  • -s :根據(jù)名稱對(duì)類、類別進(jìn)行排序。
  • -S :根據(jù)名稱對(duì)方法名進(jìn)行排序。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容