由deb文件得到dylib庫后,將dylib庫注入到二進制文件中,重新打包完成動態庫附帶的功能。
1. 獲得dylib文件
使用theos建立tweak工程后,hook住要改寫的函數,之后編譯、打包(make、make package)生成xxxx.deb文件,deb文件是可以直接在越獄手機安裝的。
將該deb文件后綴改為.zip文件,使用Keka(自帶的沒測過)解壓,解壓幾次后,會出現文件夾Library/MobileSubstrate/DynamicLibraries,里面有xxx.dylib文件。
2. 查看dylib文件的依賴項
使用MAC自帶otool工具查看,筆者的依賴路徑如下,命令為:
otool -L /xx/xx/xxx.dylib
從圖中可以看出除了CydiaSubstrate庫,其他的都是系統自帶的庫。CydiaSubstrate為越獄手機中的庫文件,其在越獄手機中的路徑為/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate,或直接通過SSH連接到手機搜索,命令為
find / -iname "CydiaSubstrate" //搜索CydiaSubstrate
把CydiaSubstrate拷貝到電腦上,重命名為libsubstrate.dylib
3. 移動libsubstrate.dylib、xxxx.dylib文件到xxx.app中
將要破解的ipa文件改為zip文件解壓后,把libsubstrate.dylib、xxxx.dylib移動到xxx.app中
4. 修改xxxx.dylib文件依賴
//loader_path固定字符串,不能更改
install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib xxxx.dylib
5. 再次查看xxx.app目錄下的xxx.dylib文件依賴項
從圖中可以看出依賴項路徑已被修改
6. 將dylib注入到二進制文件中
optool工具地址:https://github.com/alexzielenski/optool
直接下載是編譯不過的,還要下載ArgumentParser,地址為:https://github.com/mysteriouspants/ArgumentParser
把ArgumentParser文件導入到optool工程中,編譯后生成optool工具,之后使用optool工具將dylib文件注入到二進制文件中(可直接下載我的工程,https://github.com/hzpqt/optool-)
./optool install -c load -p "@executable_path/xxx.dylib" -t /xxx.app/xxx //executable_path為固定字符,不能更改
如果順利的話,終端應該會輸出:
7. 重新簽名打包
筆者使用的工具是iOS App Signer,選擇好證書、授權文件后,開始打包
8. 安裝xxx.ipa文件
如果安裝成功后,點擊打開出現閃退,估計就是以上路徑配置有問題,可以導出崩潰日志看看。
作者:百省
鏈接:http://www.lxweimin.com/p/8236249edd35
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。