iOS攻防:class-dump 與 Dumpdecrypted 使用

發表於2017-01-21

1 class dump

class dump 是一個用於檢查儲存在 Mach-O 檔案中的 objective-c 執行時資訊的工具,攻防中最常用、實用的命令列工具。

1.1 class dump 好玩在哪?

class dump 絕對可以滿足你的好奇心。你可以通過 class dump :

  1. 檢視閉源的應用、frameworks、bundles。
  2. 對比一個 APP 不同版本之間的介面變化。
  3. 對一些私有 frameworks 做些有趣的試驗。

1.2 Download

當前版本: 3.5 (64 bit Intel)
需要 Mac OS X 10.8 或更高版本

class-dump-3.5.dmg
class-dump-3.5.tar.gz
class-dump-3.5.tar.bz2

1.3 Use

下載好後,雙擊dmg檔案,將其中的 class-dump 檔案放到/usr/local/sbin 目錄下,然後就可以在命令列中使用了。

blog_iOSclassdump01

官方用法指南:

簡單的舉例:

/Applications/Calculator.app 是 Mac 上計算器應用的路徑。
~/Desktop/dump/Calculate-dump 是指定的存放 dump 出來標頭檔案的資料夾路徑。

執行完成後可以看到指定的儲存目錄下已經有 dump 出來的標頭檔案了:

blog_iOSclassdump02

開啟一個 .h 檔案可以看到相應內容:

blog_iOSclassdump03

2 Dumpdecrypted

class dump 雖然能幫你解析出一個 app 的標頭檔案,但是對於 App Store 下載的 App 都是通過蘋果的一層簽名加密,通常我們成為『加殼』。對於已經加殼的 APP,解析後的效果就和加了程式碼混淆類似。

比如直接去 dump 微信,出來的結果大概是這樣:

blog_iOSclass dump04

2.1 Download

dumpdecrypted GitHub 地址

2.2 Install

Dumpdecrypted 比另一個砸殼工具 Clutch 要難用的多。但由於 Clutch 無法砸開含有相容 WatchOs
2 的 App,所以只能使用 Dumpdecrypted。

下載後開啟 Makefile 檔案,注意第三行:

這裡填寫的 SDK 必須與你越獄的 iPhone 系統等級一致,你可以這樣檢視你 MAC 的 SDK :

輸出:

而我的手機是 7.0 的,所以只能去這裡下載對應的 SDK。

Makefile 所有需要填寫的填好後:

在當前目錄下生成 dumpdecrypted.dylib 檔案。

如果你覺得很麻煩,可以直接來這裡或者這裡下載。

2.3 Use

dumpdecrypted.dylib 放到需要砸殼 app 的 Documents 下。

查詢微信的 Documents:

得到路徑:

scp 傳輸:

砸殼:

注意 DYLD_INSERT_LIBRARIES= 後填寫的是你剛剛傳輸的 .dylib 檔名,我的是 dumpdecrypted_7.dylib

砸殼成功:

ls 檢視 Documents 中檔案多了一個 WeChat.decrypted,這就是砸殼過後的檔案,scp出來:

3 class dump 砸殼後的檔案

上一步我們得到了 WeChat.decrypted,現在可以對其進行 dump:

–arch armv7 是指定架構,dumpdecrypted 只會砸你手機處理器對應的那個殼,fat binary 的其它部分仍然是有殼的,而 class-dump 的預設目標又不是被砸殼的那個部分,如果不指定架構只能匯出 CDStructures.h 一個檔案

現在就可以看到 dump 後是明文的了:

blog_iOSclassdump05

4 Learn More

當你能看到 .h 檔案時候,意味著你知道了這個應用程式的各種介面,除了學習別人的優雅程式碼之外,顯然也也可以做一些更有意思的事情,通過一些猜想和試驗,我們可以去嘗試做一個微信的外掛。

下一次iOS攻防將會介紹動態庫的注入和微信外掛的製作~

如果您感興趣~請點選下方打賞支援萌妹子的原創喲~


有什麼問題都可以在博文後面留言,或者微博上私信我,或者郵件我coderfish@163.com

博主主要寫 java 和 iOS 的。

希望大家一起進步。

CSDN: CSDN部落格地址

我的微博:小魚周凌宇

相關文章