建立Tweak項目
這裡我們以前已經講過,在這不做詳細介紹,可以到我微信公衆号: 樂Coding記錄中檢視。
修改Tweak.xm檔案,然後make package編譯。
%hookWCAccountMainLoginViewController-(void)viewDidLoad{%orig;UIAlertView*alert=[[UIAlertViewalloc] initWithTitle:@"測試"message:@"你成功了"delegate:selfcancelButtonTitle:@"Cancel"otherButtonTitles:@"OK",nil];[alertshow];}%end
編譯成功後在工程的.theos/obj/debug(.theos是個隐藏目錄)目錄下會找到我們需要的動态庫.dylib結尾的檔案
修改動态庫依賴
檢視動态庫依賴項
otool -LWXRedPackage.dylib
結果資訊如下:
結果中有一段越獄手機中才會用到的CyduaSubstrate庫。
我們需要用 libsubstrate.dylib替換這個庫。
先檢視Theos安裝目錄/opt/theos/lib中是否有 libsubstrate.dylib檔案,如果沒有可以到https://github.com/kokoabim/iOSOpenDev/blob/master/lib/libsubstrate.dylib 下載下傳。
使用install_name_tool修改動态庫的路徑,指向 app 二進制檔案的同級目錄
install_name_tool -change/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib WXRedPackage.dylib
修改後再次檢視動态了依賴項
otool -LWXRedPackage.dylib
執行結果如下,如果原來庫檔案路徑變成了新的相對路徑說明成功。
将動态連結庫注入二進制檔案中
如果電腦中沒有optool可以從https://github.com/alexzielenski/optool下載下傳,因為opool添加了submodule,是以建議使用一下指令clone
gitclone --recursivehttps://github.com/alexzielenski/optool.git
然後用Xcode打開編譯後,把Product目錄下的optool二進制檔案拷貝到/usr/local/bin目錄下。
拷貝libsubstrate.dylib和我們自己編寫并修改過的WXRedPackage.dylib拷貝到WeChat.app目錄下
修改微信二進制檔案加載Load Commands段
optool install -cload -p"@executable_path/WXRedPackage.dylib"-tWeChat.app/WeChat
執行結果如下:
沖簽名打包
在開始打包之前,請先将 WeChat.app 裡面的 Watch 目錄删除,這個目錄是跟 Watch 有關的,如果不删除的話,在越獄手機上可以,但是我的iPhone6上安裝不成功。
簽名可以使用codesign -f -s 證書名字 目标檔案指令,打包可以使用xcrun -sdk iphoneos PackageApplication -v WeChat.app -o $(pwd)/WeChat2.ipa指令。下面我們采用一個可視化的工具。
使用iOS App Signer 他是開源的,大家可以在http://dantheman827.github.io/ios-app-signer/ 找到安裝包和github源碼連結。
下載下傳打開軟體後如下圖:
Input File: 我們剛剛修改的微信.app檔案 ,下面兩個是證書資訊。
點選Start打包。
ipa打包成功,下面可以用iTools或者PP助手安裝了
先檢視Theos安裝目錄/opt/theos/lib中是否有 libsubstrate.dylib檔案,如果沒有可以到https://github.com/kokoabim/iOSOpenDev/blob/master/lib/libsubstrate.dylib 下載下傳。
使用install_name_tool修改動态庫的路徑,指向 app 二進制檔案的同級目錄
install_name_tool -change/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib WXRedPackage.dylib
修改後再次檢視動态了依賴項
otool -LWXRedPackage.dylib
執行結果如下,如果原來庫檔案路徑變成了新的相對路徑說明成功。
先檢視Theos安裝目錄/opt/theos/lib中是否有 libsubstrate.dylib檔案,如果沒有可以到https://github.com/kokoabim/iOSOpenDev/blob/master/lib/libsubstrate.dylib 下載下傳。
使用install_name_tool修改動态庫的路徑,指向 app 二進制檔案的同級目錄
install_name_tool -change/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib WXRedPackage.dylib
修改後再次檢視動态了依賴項
otool -LWXRedPackage.dylib
執行結果如下,如果原來庫檔案路徑變成了新的相對路徑說明成功。
将動态連結庫注入二進制檔案中
如果電腦中沒有optool可以從https://github.com/alexzielenski/optool下載下傳,因為opool添加了submodule,是以建議使用一下指令clone
gitclone --recursivehttps://github.com/alexzielenski/optool.git
然後用Xcode打開編譯後,把Product目錄下的optool二進制檔案拷貝到/usr/local/bin目錄下。
拷貝libsubstrate.dylib和我們自己編寫并修改過的WXRedPackage.dylib拷貝到WeChat.app目錄下
修改微信二進制檔案加載Load Commands段
optool install -cload -p"@executable_path/WXRedPackage.dylib"-tWeChat.app/WeChat
執行結果如下:
拷貝libsubstrate.dylib和我們自己編寫并修改過的WXRedPackage.dylib拷貝到WeChat.app目錄下
修改微信二進制檔案加載Load Commands段
optool install -cload -p"@executable_path/WXRedPackage.dylib"-tWeChat.app/WeChat
執行結果如下:
沖簽名打包
在開始打包之前,請先将 WeChat.app 裡面的 Watch 目錄删除,這個目錄是跟 Watch 有關的,如果不删除的話,在越獄手機上可以,但是我的iPhone6上安裝不成功。
簽名可以使用codesign -f -s 證書名字 目标檔案指令,打包可以使用xcrun -sdk iphoneos PackageApplication -v WeChat.app -o $(pwd)/WeChat2.ipa指令。下面我們采用一個可視化的工具。
使用iOS App Signer 他是開源的,大家可以在http://dantheman827.github.io/ios-app-signer/ 找到安裝包和github源碼連結。
下載下傳打開軟體後如下圖:
Input File: 我們剛剛修改的微信.app檔案 ,下面兩個是證書資訊。
點選Start打包。
Input File: 我們剛剛修改的微信.app檔案 ,下面兩個是證書資訊。
點選Start打包。
ipa打包成功,下面可以用iTools或者PP助手安裝了