iOS逆向之程式碼注入(framework)
阿新 • • 發佈:2019-02-07
題外話:此教程是一篇嚴肅的學術探討類文章,僅僅用於學習研究,也請讀者不要用於商業或其他非法途徑上,筆者一概不負責喲~~
準備工作
程式碼注入思路:
DYLD會動態載入Frameworks中所有的動態庫,那麼在Frameworks中加一個自己的動態庫,然後在自己動態庫中hook和注入程式碼動態庫存放的位置:Frameworks
![image.png](https://upload-images.jianshu.io/upload_images/1013424-161997866a52aec0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)找到可執行檔案WeChat
步驟:
1、根據iOS逆向之自動化重簽名先編譯執行微信,然後新建Framework
TARGETS新增: ![image.png](https://upload-images.jianshu.io/upload_images/1013424-5b58e339a4d28335.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![image.png](https://upload-images.jianshu.io/upload_images/1013424-0403308f4dd9fada.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)2、新建一個WJHook類
3、想實現剛載入就要執行,程式碼就要寫在load方法裡
![image.png](https://upload-images.jianshu.io/upload_images/1013424-9cefc0037c32ff73.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)4、為工程新增依賴關係
- 在程式碼注入targets的Build Phases中新增Copy Files
- 在Copy Files中選擇Frameworks
- 新增WJHookFrameWork
5、編譯一下,在app包的位置檢視
顯示包內容,在Frameworks中檢視
由上可知,WJHookFrameWork已經加入成功
6、執行,並沒有成功,沒有執行load裡的程式碼
原因:用MachOView開啟可執行檔案WeChat,在Load Commands找不到WJHookFrameWork
7、將WJHookFrameWork寫入MachO檔案
需要用到工具:yololib
因為經常會用到這個工具,建議將它放到 /usr/local/bin
- 顯示隱藏檔案,可以使用
KillAll Finder
這條命令來顯示。同時,將 true 改成 false, 就可恢復隱藏狀態。- 或者使用快捷鍵 ⌘ + ⬆️ + . 來實現
- 解壓微信越獄包
- 將WeChat.app顯示包內容,找到WeChat可執行檔案
增加執行許可權:chmod +x WeChat
- 寫入WeChat可執行檔案:
yololib WeChat Frameworks/WJHookFrameWork.framework/WJHookFrameWork
“Frameworks/WJHookFrameWork.framework/WJHookFrameWork”路徑是指WJHookFrameWork可執行檔案的路徑
檢查MachO檔案的Load Commands裡是否有WJHookFrameWork
如圖,加入成功。刪除原來的微信-6.6.5(越獄應用).ipa,打包Payload
zip -ry WeChat.ipa Payload
將WeChat.ipa放入APP目錄,刪除其他資料夾