天天看點

class-dump 的安裝與使用

class-dump的作用:

這個工具的作用相當純粹,作用對象是 Mach-O 檔案,利用 object-c 語言的 runtime 特性,将它的頭檔案取出來,生成對應的 .h 檔案。

class-dump 的安裝:

http://stevenygard.com/projects/class-dump 這裡有最新的 class-dump 版本,選擇最新的版本 class-dump-3.5.dmg下載下傳,然後将 class-dump 複制到 /usr/bin/ 下,然後在  Terminal 中執行指令“sudo chmod 777 /usr/bin/class-dump” ,然後輸入密碼,這一步是為了給 class-dump 賦予權限。運作 class-dump,可以看到他的一些基本參數。如圖:

class-dump 的安裝與使用

定位 Mach-O 檔案:

以微信為例,在 MAC 上的 App Store 上搜尋“微信”并下載下傳,下載下傳完成後打開Finder,菜單欄上 “Go” 目錄下點開“Go to Folder ...”

在輸入框中輸入 “~/Music/iTunes/iTunes Media/Mobile Applications/” 點 ”Go“,即可找到所有下載下傳過的APP,或者直接去相應目錄下

尋找也是可以的。

還有一種方法是在手機 App Store 上下載下傳應用,然後拷貝到電腦上,這個可以借助iTools 完成 ,或者用 scp 拷貝,scp的方法以後

會詳細解釋,應用的路徑會在下一篇詳細解釋。

找到 ipa 檔案之後要對他進行解壓縮,打開 Terminal ,執行指令 unzip /path/to/WeChat 6.3.30.ipa ,如圖:

class-dump 的安裝與使用

有個經驗是,大家可以直接把檔案拖進 Terminal·,Terminal 會生成絕對路徑。

此時在目前目錄下應該生成了一個叫 Payload 的檔案夾,裡面的檔案是 WeChat.app ,右鍵點選 “Show Package Contents”,其中有個 info.plist 檔案,我們可以在這個plist 檔案中找到微信的可執行檔案的名字,我們可以打開 plist 檔案,檢視 “CFBundleExecutable” 字段所對應的值,一個一個找太慢了,我們可以打開 Terminal ,執行如下

class-dump 的安裝與使用

原來Mach-O 檔案的名字就叫 “WeChat" ,在目前檔案夾找到他,拷貝到桌面上的 Payload 檔案夾下,這個時候我們的 class-dump 已經磨刀霍霍了。

執行class-dump:

以下的步驟作用是将微信的頭檔案 class-dump 到 ”~/Desktop/headers“ 下,指定機器的ARM架構資訊,架構對應的資訊請查詢文後的表格,并将頭檔案按名字排序。

class-dump -s -S -H --arch armv7 /Users/cxderic/Desktop/Payload/WeChat -o ~/Desktop/headers

執行之後你或許發現,headers下面隻有一個檔案 CDStructures.h !

如果你到這一步了說明之前的工作都已經生效了!但是,在AppStore 下載下傳的 App 都是經過加密的,就是所謂的加殼了,需要我們把這層殼砸掉我們才會看到微信的所有頭檔案,逆向之路漫漫兮其修遠兮,你準備好跟我一起走了嗎?後面我會介紹如何砸殼。

ARM裝置對照表:

表 1-1 ARM 裝置對照表

Name ARM Name ARM
   iPhone 4s    armv7    The New iPad    armv7
   iPhone 5    armv7s    iPad with Retina display    armv7s
   iPhone 5c    armv7s    iPad Air    arm64
   iPhone 5s    arm64    iPad Air 2    arm64
   iPhone 6 Plus    arm64    iPad mini with Retina display    arm64
   iPhone 6    arm64    iPad mini 3    arm64
   iPad 2    armv7    iPod touch 5    armv7
   iPad mini    armv7