iOS 逆向基礎概念筆記

最近有一個需求涉及到逆向相關的知識,于是進一步了解下相關,同時筆記記錄下,其中核心流程是:應用砸殼 -> 靜態/動態分析 -> 代碼注入 -> 打包重簽名,最核心的是靜態分析和動態調試的咯。

一、獲取已經去殼的可執行文件

1-1、通過越獄手機獲取到的 iPA 砸殼

1-2、或是直接獲取到已經去殼的,可通過 PP 助手之類的(不過我最近下的 Mac 版本一直閃退)

  • 可通過 otool -l 可執行文件 | grep crypt 中的結果,cryptid 判斷(有殼為1,無殼為0)
  • PS: 可執行文件,可以通過解壓 ipa 文件,然后通過顯示包內容看到的。
二、靜態分析
  • class-dump: 導出所有類的頭文件,可以在其中看到類名、公有屬性
  • IDA: 反編譯工具,可以把機器代碼反編譯成匯編代碼
三、動態調試
  • Reveal: UI 層級解析工具,可以像Xcode一樣,解析展示APP的UI層級結構
  • Cycript: 強大的動態調試工具,可以在APP運行的時候,對APP執行查看、改動操作
  • LLDB: 蘋果自己提供的動態調試工具, 方便調試
四、代碼注入
  • Hook 方法的使用
  • Framework 或者 dylib 的注入

可具體參考李斌同學的文章,真的很詳細:

五、 重簽名
六、 逆向反思
6-1、反逆向相關
  • 編寫階段:對一些功能采用C語言、匯編語言等靜態語言編寫
  • 編譯階段混淆:代碼混淆、硬編碼混淆、資源文件混淆、匯編混淆等
  • 運行階段逆向檢測:越獄環境檢測、重簽多開檢測等
  • 運行階段功能限制:代碼開關、封號、封手機等
6-2、學習點
  • 畏懼心態
  • 底層知識的了解
七、End

類型如下字眼

本篇記錄主要是了解和眼熟些工具, 在真正操作的時候可以得心應手的,目前個人只實戰了一個小功能。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容