MacOS app 逆向准備
理論知識
什么是逆向
逆向工程(Reverse engineering),又稱反向工程,是一種技術過程,即對一項目標產品進行逆向分析及研究,從而演繹並得出該產品的處理流程、組織結構、功能性能規格等設計要素,以制作出功能相近,但又不完全一樣的產品。逆向工程源於商業及軍事領域中的硬件分析。其主要目的是,在無法輕易獲得必要的生產信息下,直接從成品的分析,推導產品的設計原理。
逆向工程可能會被誤認為是對知識產權的嚴重侵害,但是在實際應用上,反而可能會保護知識產權所有者。例如在集成電路領域,如果懷疑某公司侵犯知識產權,可以用逆向工程技術來尋找證據。
逆向用途
主要用於產品分析,知識產權保護,軟件安全。
逆向方式
- 網絡分析
通過抓包工具進行流量分析,之后篡改接口數據控制客戶端的行為。
- 靜態分析
通過砸殼,反匯編,classdump等技術來分析app的行為
- 動態分析
通過分析app的運行的數據,來定位注入點,或者獲取關鍵數據。
逆向流程
界面分析 -> 動態分析 -> 靜態分析 -> |-> 修改源碼 -> 替換可執行文件(可能會需要反簽名和簽名)
|-> 創建hook的類庫,動態注入到程序運行時(著名的insert_dylib)
常用工具
- XCode
- network link conditioner限制Mac的網速
- unsign移除簽名
- restore-symbol還原符號
靜態分析:
動態分析:
frida-trace -m "-[WEWConversationWaterMarkMgr *]" WeChat\ Work
- dtrace 遇到問題osx elcapitan - Is there a workaround for: “dtrace cannot control executables signed with restricted entitlements”? - Stack Overflow
sudo dtrace -s trace.d -p 19570
hook 函數:
嵌入目標程序:
insert_dylib --all-yes ~/learning/WeChatWork-Plugins/Build/Products/Debug/libWeChatWork-Plugins.dylib 企業微信 企業微信_pach
source
https://github.com/1483523635/blogs/blob/master/tweak/MacOs/tools.md