一、使用 Cycript
動態修改 iPhone 真機運行中的 App
下載封裝好語法的 cy 文件 下載地址 MJCript
將下載好的
MJCript
復制到 iPhone 的usr/lib/cycript0.9
目錄下.啟動需要動態修改的 App
命令行
cycript -p ting
進入喜馬拉雅 App 的cycript
模式@import mjcript
導入我們的 cy 庫將
立即登錄
動態修改為demo
二、使用 Reveal 查看其他優秀 APP 的頁面結構
我們有時候需要參考一些優秀 App 的設計理念,這時候我們就可以用
reveal
來查看了。
安裝 reveal (mac 軟件)免費版下載地址 密碼:obyu
在手機上通過
Cydia
安裝Reveal2loader
在手機設置頁面開啟 Reveal 對 App 的訪問權限
將 Mac 電腦中,此路徑
/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/RevealServer.framework
下的RevealServer
復制到電腦桌面并重命名為reveal2Loader.dylib
將
reveal2Loader.dylib
復制到 iPhone 的/Library/MobileSubstrate/DynamicLibraries
(里面有一個同名文件,覆蓋它)-
重啟手機,或者輸入
killall SpringBoard
,然后打開 App,即可在電腦中看到iPhone 打開的 App,可以點擊查看了。
mac 上的 reveal
三、逆向 APP 的思路
- 頁面分析
- Cycript
- Reveal
- 代碼分析
- 對 Mach-O 文件的靜態分析
- MachOView
- class-dump
- Hopper Disassembler
- ida
- 動態調試
- 對運行中的 APP 進行代碼調試
- dbugserver
- LLDB
- 代碼編寫
- 注入代碼到 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偽代碼
(只能是偽代碼,不能唯一確定)