iOS 逆向 day03 Cycript Reveal class-dump Hopper Disassembler

一、使用 Cycript 動態修改 iPhone 真機運行中的 App

  1. 下載封裝好語法的 cy 文件 下載地址 MJCript

  2. 將下載好的 MJCript 復制到 iPhone 的 usr/lib/cycript0.9 目錄下.

  3. 啟動需要動態修改的 App

  4. 命令行cycript -p ting進入喜馬拉雅 App 的 cycript 模式

  5. @import mjcript 導入我們的 cy 庫

  6. 立即登錄 動態修改為 demo

修改前(立即登錄)
修改后(demo)

二、使用 Reveal 查看其他優秀 APP 的頁面結構

使用 Reveal 工具查看 喜馬拉雅 APP 頁面結構

我們有時候需要參考一些優秀 App 的設計理念,這時候我們就可以用 reveal 來查看了。

  1. 安裝 reveal (mac 軟件)免費版下載地址 密碼:obyu

  2. 在手機上通過 Cydia 安裝 Reveal2loader

  3. 在手機設置頁面開啟 Reveal 對 App 的訪問權限

iPhone打開 Reveal 權限入口
  1. 將 Mac 電腦中,此路徑 /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/RevealServer.framework 下的 RevealServer 復制到電腦桌面并重命名為 reveal2Loader.dylib

  2. reveal2Loader.dylib 復制到 iPhone 的 /Library/MobileSubstrate/DynamicLibraries (里面有一個同名文件,覆蓋它)

  3. 重啟手機,或者輸入 killall SpringBoard ,然后打開 App,即可在電腦中看到iPhone 打開的 App,可以點擊查看了。

    mac 上的 reveal

三、逆向 APP 的思路

  1. 頁面分析
  • Cycript
  • Reveal
  1. 代碼分析
  • 對 Mach-O 文件的靜態分析
  • MachOView
  • class-dump
  • Hopper Disassembler
  • ida
  1. 動態調試
  • 對運行中的 APP 進行代碼調試
  • dbugserver
  • LLDB
  1. 代碼編寫
  • 注入代碼到 APP 中
  • 必要時還可能需要重新簽名、打包 ipa

四、 class-dump

顧名思義,它的作用就是把 Mach-O 文件的 class 信息給 dump 出來(把類信息給導出來),生成對應的 .h 頭文件

  • 官方下載地址 http://stevenygard.com/projects/class-dump/
  • 下載完工具包后,將 class-dump 可執行文件復制到 /usr/local/bin 目錄,這樣在終端就能識別 class-dump 命令了。
  • 常用格式
    class-dump -H Mach-O文件路徑 -o 頭文件存放目錄
  • 這樣只能 dump 出未加密和越獄的 Mach-O 文件,現在基本還要進行砸殼處理。

五、 Mac 終端命令識別小知識補充

  • 首先 Mac 會去 /usr/bin 里面找,里面有比如常用的 cd 指令。
  • /usr/bin 這個目錄現在默認是不可寫入的。
  • 如果Mac 還未找到用戶輸入的指令,那么它會去 Mac 的 /usr/local/bin 目錄下尋找
  • 如果我們要給系統添加一些可執行命令,就添加到 /usr/local/bin 目錄下

六、Hopper Disassembler

Hopper Disassembler 能夠將 Mach-O 文件的機器語言代碼反編譯成匯編代碼、OC 的偽代碼和 Swift 的偽代碼。

反編譯結果

七、Xcode 項目編譯過程

同一種架構平臺下,每一條匯編指令都有與之對應的唯一機器指令

  • 代碼 編程成 匯編語言 再編譯成 機器語言
  • 機器語言 可以反編譯成 匯編語言 可以反編譯成 OC偽代碼(只能是偽代碼,不能唯一確定)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。