iOS 反編譯入門
阿新 • • 發佈:2019-01-24
最近看了幾篇關於 APP 安全方面的文章,其實網上關於 iOS 反編譯相關內容的文章都大同小異,這篇部落格也就是對這方面內容做一個整理。
class-dump
作用:匯出應用的標頭檔案,算是逆向工程的入門級工具
安裝:開啟 .dmg 檔案,將 class-dump 檔案拉到 /usr/local/bin 目錄下,這樣就可以在終端使用 class-dump 命令了。
Hopper Disassembler
- 作用:二進位制反彙編器,反編譯和除錯,可以拆開任何二進位制。
演示專案
- 新建專案,在 ViewController 的 .h 和 .m 檔案中寫如下程式碼,然後執行專案
- 獲取APP包(資源庫/Developer/Xcode/DerivedData/剛剛執行的APP/Build/Products/Debug-iphonesimulator/APP包)-> 顯示包內容 -> 將二進位制檔案拿到桌面新建立的資料夾中
- 進入終端,在資料夾目錄下執行
class-dump -H 反編譯app
,在資料夾中就會匯出標頭檔案
- 開啟 Hopper Disassembler,將二進位制檔案拉入,點選工具欄中間的
if(b) f(x);
切換成虛擬碼模式,這樣方法裡面的邏輯就展示出來了(這裡有個問題是,別人的 NSLog 中列印的文字可以顯示出來,我的就不顯示)
總結
iOS 反編譯技術最重要的是細心加耐心,我也是關注 APP 的安全性,從而發散學習一下,沒有深入去研究。首先我在工作中並沒有運用到反編譯技術,其次也不想把太多時間浪費其中。
還有好多方便實用的工具沒有一一介紹,比如和 Hopper Disassembler 差不多的 IDA、UI 層解析工具 Reveal 等等,以後有時間或者工作需要再深入研究。
最最主要的是,以後開發要把重要邏輯封裝到靜態庫裡,大大降低被反編譯的可能。