工具準(zhǔn)備
class-dump (獲取逆向APP頭文件工具)
下載地址: http://stevenygard.com/projects/class-dump
下載dmg文件, 將dmg文件中的class-dump復(fù)制到/usr/bin目錄,并在Terminal中執(zhí)行sudo chmod 777 /usr/bin/class-dump
命令賦予其執(zhí)行權(quán)限
iOSOpenDev (構(gòu)造越獄環(huán)境)
安裝具體操作及問題解決參考: http://www.lxweimin.com/p/29580725707a
yololib (注入dylib庫)
PP助手
用來下載越獄APP(已經(jīng)破殼過的APP)
文件準(zhǔn)備
開發(fā)者證書 (個(gè)人證書 企業(yè)證書均可)
鑰匙串內(nèi)有存儲(chǔ), 隨便取一個(gè)即可
證書對(duì)應(yīng)的.mobileprovision文件
用對(duì)應(yīng)證書生成.mobileprovision, 可在/Users/XXX/Library/MobileDevice/Provisioning Profiles獲取
Entitlements.plist文件
用來給注入后的APP簽名, 否則無法安裝
步驟
PP助手下載越獄版本的微信, 獲取IPA包, 解壓獲取WeChat文件
安裝如圖方式獲取WeChat二進(jìn)制文件
素材2.png
素材3.png
素材4.png
dump可執(zhí)行文件 (獲取頭文件)
安裝class-dump后, cd文件所在的目錄 終端輸入
class-dump -H WeChat -o WeChat.h
獲取微信項(xiàng)目的頭文件如圖所示
素材5.png
新建dylib工程
Xcode默認(rèn)不支持生成dylib,所以我們需要下載iOSOpenDev,安裝完成后(Xcode7環(huán)境會(huì)提示安裝iOSOpenDev失敗,參考上文安裝指南),重新打開Xcode,在新建項(xiàng)目的選項(xiàng)中即可看到iOSOpenDev選項(xiàng)了。
素材1.png
- 項(xiàng)目命名為WeChatHook, 創(chuàng)建完成后生成WeChatHook.h/.m文件, 刪除.h文件, 并修改.m文件類型為.mm文件
- 引入CaptainHook.h文件 (CaptainHook 是使用的Runtime 機(jī)制實(shí)現(xiàn),利用宏命令封裝類定義、方法替換等功能)
素材6.png
- hook對(duì)應(yīng)功能, 并修改 git地址
- 選擇對(duì)應(yīng)開發(fā)者, 設(shè)備選擇Generic iOS Device對(duì)項(xiàng)目進(jìn)行build, 生成對(duì)應(yīng)的dylib文件
生成的lib文件可在git中編譯生成, 工具類及方法均給出git地址
素材7.png
利用yololib注入WeChat.app內(nèi)生成dylib文件
- 將yololib可執(zhí)行文件與生成的dylib文件放在同一目錄下
- 終端輸入
./yololib WeChat libWeChatHook.dylib
素材8.png
生成Entitlements.plist文件
- 在鑰匙串中獲取開發(fā)者對(duì)應(yīng)的id 如: iPhone Developer: XXXX (xxxx)
素材9.png
- 進(jìn)入上文所述embedded.mobileprovision目錄
- 終端輸入
security cms -D -i "embedded.mobileprovision" > t_entitlements_full.plist
- 終端輸入
/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' t_entitlements_full.plist > Entitlements.plist
- 此時(shí)即生成了對(duì)應(yīng)的Entitlements.plist文件
對(duì)微信簽名
- 移動(dòng)上文生成的libWeChatHook.dylib, 注入后的WeChat二進(jìn)制文件, embedded.mobileprovision到WeChat.app中
- 利用
codesign -f -s 證書名字 目標(biāo)文件
對(duì)如圖以下文件進(jìn)行簽名
素材10.jpeg
打包安裝
- 終端輸入
zip -qry ../extracted.ipa *
- 利用PP助手 或者
mobiledevice install_app extracted.ipa
安裝至手機(jī)
測(cè)試結(jié)果
素材11.png
素材12.png
素材13.png
素材14.png