1.安裝 iOSOpenDev,下載地址,選擇「iOSOpenDev 1.6-2 Installer」,直接安裝「iOSOpenDev-1.6-2.pkg」,這個通常第一次安裝都會失敗。html
安裝失敗了,請參考解決方案1地址,法案2地址,方案3地址ios
2.安裝完後,在xcode新建一個項目會看到下圖選項c++
這裏選擇CaptainHook Tweak新建一個名爲hook的項目git
3.導入一些依賴庫Cycript.framework、libstdc++.6.0.9.tbd、libsqlite3.0.tbd、JavaScriptCore.framework,而且在Build Settings裏面的搜索bitcode,將Enable Bitcode選項設爲NOgithub
4.hook.mm文件寫入以下代碼(備註1把以前默認生成的代碼刪除或者註釋,備註2 XXAppDelegate須要看你hook的應用的AppDelegate加什麼前綴,若是沒有前綴就就AppDelegate。微信是以MicroMessenger前綴,至於爲啥知道這個前綴,請使用class-dump在微信的Mach-O文件中的頭文件信息提取出來,生成對應的.h文件)sql
#import <Cycript/Cycript.h> #import <CaptainHook/CaptainHook.h> #define CYCRIPT_PORT 8888 CHDeclareClass(XXAppDelegate); CHDeclareClass(UIApplication); CHOptimizedMethod2(self, void, XXAppDelegate, application, UIApplication *, application, didFinishLaunchingWithOptions, NSDictionary *, options) { CHSuper2(XXAppDelegate, application, application, didFinishLaunchingWithOptions, options); NSLog(@"## 我要hook了 ##"); CYListenServer(CYCRIPT_PORT); } __attribute__((constructor)) static void entry() { CHLoadLateClass(XXAppDelegate); CHHook2(XXAppDelegate, application, didFinishLaunchingWithOptions); }
5.build (記得選擇用真機,不要用模擬器)。build 完後的結果會放在 Xcode 項目緩存目錄 ~/Library/Developer/Xcode/DerivedData,打開這個文件夾後找到前綴和項目名一致的文件夾,找到裏面的 Build/Products/Debug-iphoneos ,把 hook.dylib hook.dylib.dSYM 兩個文件先拷貝出來待用。xcode
6.1.你要hook的應用須要脫殼的應用或者企業級應用,脫殼須要越獄手機,沒有的話也不礙事,去pp助手等第三方軟件找到脫殼的應用(以微信爲例)緩存
6.2.找到應用對應的二進制文件,查看包含哪些架構,終端輸入:微信
file /Users/xxx/Desktop/HOOK/微信-6.6.5\(越獄應用\)/Payload/WeChat.app/WeChat
輸出以下,看到微信包含兩個架構armv7和arm64架構
6.3.能夠使用otool來輸出app的load commands,查看cryptid標誌位來判斷app是否被加密:1表明加密,0表明被解密
otool -l /Users/xxx/Desktop/HOOK/微信-6.6.5\(越獄應用\)/Payload/WeChat.app/WeChat | grep -B 2 crypt
輸出以下:
6.4.還有一個重要的一點,刪除WeChat.app/下的PlugIns和Watch文件(由於微信有多個targets,會致使下面的安裝ipa仍是會閃退)
6.5.使用yololib工具對二進制文件進行dylib的注入,終端輸入:
./yololib /Users/xxx/Desktop/HOOK/Payload/你要hook的應用名.app/你要hook的應用名 hook.dylib
7.使用MachOExplorer軟件查看loadCycript.dylib是否注入成功(這裏不推薦使用MachOView,由於它不更新了,還TMD常常閃退這是不能忍受的)
8.將咱們注入的dylib文件放到注入的應用的GAMECO.app目錄下,終端輸入:
cp hook.dylib /Users/xxx/Desktop/HOOK/Payload/你要hook的應用名.app/
9.重簽名應用,推薦使用名爲iOS App Signer的Mac上的應用,固然也能夠用命令行進行重簽名,請參考。
10.使用mobiledevice工具安裝重簽名的ipa,終端輸入:
./mobiledevice install_app xxx.ipa
11.打開剛纔安裝hook後的應用,使用蒲公英或者其餘的軟件查看log,能夠看到咱們hook的log信息