關於 iOS HOOK

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信息

相關文章
相關標籤/搜索