題外話:此教程是一篇嚴(yán)肅的學(xué)術(shù)探討類文章,僅僅用于學(xué)習(xí)研究桨昙,也請(qǐng)讀者不要用于商業(yè)或其他非法途徑上,筆者一概不負(fù)責(zé)喲~~
準(zhǔn)備工作
- 非越獄的iPhone手機(jī)
- 用PP助手下載: 微信6.6.5(越獄應(yīng)用)
- MachOView
MachOView下載地址:http://sourceforge.net/projects/machoview/
MachOView源碼地址:https://github.com/gdbinit/MachOView
- yololib
yololib下載地址https://github.com/KJCracks/yololib?spm=a2c4e.11153940.blogcont63256.9.5126420eAJpqBD
代碼注入思路:
DYLD會(huì)動(dòng)態(tài)加載Frameworks中所有的動(dòng)態(tài)庫(kù)电谣,那么在Frameworks中加一個(gè)自己的動(dòng)態(tài)庫(kù)友瘤,然后在自己動(dòng)態(tài)庫(kù)中hook和注入代碼
動(dòng)態(tài)庫(kù)存放的位置:Frameworks
找到可執(zhí)行文件WeChat
用MachOView打開可執(zhí)行文件WeChat匪燕,在Load Commands里可以查看到動(dòng)態(tài)庫(kù)
步驟:
1轿亮、根據(jù)iOS逆向之自動(dòng)化重簽名先編譯運(yùn)行微信纬凤,然后新建Framework
TARGETS添加:
2捐寥、新建一個(gè)WJHook類
3笤昨、想實(shí)現(xiàn)剛加載就要運(yùn)行,代碼就要寫在load方法里
4握恳、為工程添加依賴關(guān)系
-
在代碼注入targets的Build Phases中添加Copy Files
image.png -
在Copy Files中選擇Frameworks
image.png -
添加WJHookFrameWork
image.png
5瞒窒、編譯一下,在app包的位置查看
顯示包內(nèi)容,在Frameworks中查看
由上可知乡洼,WJHookFrameWork已經(jīng)加入成功
6崇裁、運(yùn)行,并沒有成功束昵,沒有執(zhí)行l(wèi)oad里的代碼
原因:用MachOView打開可執(zhí)行文件WeChat拔稳,在Load Commands找不到WJHookFrameWork
7、將WJHookFrameWork寫入MachO文件
需要用到工具:yololib
因?yàn)榻?jīng)常會(huì)用到這個(gè)工具锹雏,建議將它放到 /usr/local/bin
- 顯示隱藏文件巴比,可以使用
$defaults write com.apple.finder AppleShowAllFiles -bool true
$KillAll Finder
這條命令來顯示。同時(shí)礁遵,將 true 改成 false, 就可恢復(fù)隱藏狀態(tài)轻绞。- 或者使用快捷鍵 ? + ?? + . 來實(shí)現(xiàn)
-
解壓微信越獄包
image.png - 將WeChat.app顯示包內(nèi)容,找到WeChat可執(zhí)行文件
增加執(zhí)行權(quán)限:chmod +x WeChat
- 寫入WeChat可執(zhí)行文件:
yololib WeChat Frameworks/WJHookFrameWork.framework/WJHookFrameWork
"Frameworks/WJHookFrameWork.framework/WJHookFrameWork"路徑是指WJHookFrameWork可執(zhí)行文件的路徑
image.png
-
檢查MachO文件的Load Commands里是否有WJHookFrameWork
image.png
如圖佣耐,加入成功铲球。
- 刪除原來的微信-6.6.5(越獄應(yīng)用).ipa,打包Payload
zip -ry WeChat.ipa Payload
將WeChat.ipa放入APP目錄晰赞,刪除其他文件夾
image.png
8、運(yùn)行选侨,成功掖鱼!
代碼和工具已上傳:https://gitee.com/winjayq/ios_reverse_code_injection