臨沂網(wǎng)站建設培訓班seo工具優(yōu)化軟件
背景
theos是一個跨平臺的軟件開發(fā)框架,常用于管理,開發(fā)和部署iOS項目,同時也是開發(fā)iOS越獄插件的主要工具。和MonkeyDev不同的是,它不依賴于xcode,可以在多個操作系統(tǒng)上運行。一個完整的iOS越獄開發(fā)流程包括:越獄設備,砸殼App,分析controller,編寫注入程序,打包并注入dylib,重簽名應用運行等步驟。本文只總結了在獲得砸殼app后,使用theos注入自己編寫的依賴庫的步驟。
執(zhí)行環(huán)境:
- pc:Apple M1 Pro
- os: Sonoma 14.5
相關工具
- otool:查看目標文件信息的工具,
用來發(fā)現(xiàn)應用中使用到了哪些系統(tǒng)庫,調用了其中哪些方法,使用了庫中哪些對象及屬性比如查看iOS的Mach-O格式的二進制文件的信息。 - zsign:程序重簽名工具。
- theos:是一個跨平臺構建系統(tǒng),可用于做ios越獄插件的開發(fā)
- insert_dylib:將動態(tài)庫注入到二進制文件中的工具。
- install_name_tool:修改應用程序對動態(tài)庫的依賴路徑。
安裝依賴環(huán)境
-
安裝dpkg和ldid(theos依賴這兩個庫)
brew install dpkg ldid
-
安裝theos
export THEOS=/opt/theos git clone https://github.com/theos/theos $THEOS export PATH=$PATH:$THEOS/bin update-theos
-
安裝insert_dylib
export INSERTLIB = /opt/insert_dylib git clone https://github.com/Tyilo/insert_dylib $INSERTLIB cd /opt/insert_dylib xcodebuild export PATH=$PATH:$INSERTLIB/build/Release/
-
安裝zsign
參考:https://github.com/zhlynn/zsign
創(chuàng)建iphone/tweak項目
- 創(chuàng)建iphone/tweak項目
- 文件目錄介紹
-
Makefile:工程用到的文件,框架,庫等信息??梢灾庙擲DK版本,處理器架構等。(在此文件中加上我們需要注入的framwork,同時需要將對應的framework源碼移入theos的lib目錄中才能編譯)
-
wechatinject.plist:制定bundle為tweak的作用對象,可指定多個。
-
control:tweak所需的基本信息。
-
Tweak.x:重要文件,用來編寫hook代碼。(.x 文件支持Logos語法,.xm 文件支持Logos和C/C++語法)。logos語法請參考:https://theos.dev/docs/logos-syntax
- 編譯
編譯成功后,動態(tài)庫位于~/.theos/obj/debug目錄make clean make
- 替換libsubstrate.dylib
非越獄手機中沒有CydiaSubstrate庫,手動替換。install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib .theos/obj/debug/wechatinject.dylib
注入依賴庫
-
注入libsubstrate庫,這個庫在非越獄手機中沒有,需要手動將這個庫打進ipa包中。
libsubstrate庫能夠在程序運行時加載我們注入的動態(tài)庫。git clone https://github.com/TKkk-iOSer/TKTweakDemo.git cp others/libsubstrate.dylib ~/Downloads/Payload/WeChat.app/
-
將我們編譯的dylib庫移動到ipa包中。
cp .theos/obj/debug/wechatinject.dylib ~/Downloads/Payload/WeChat.app/
-
在WeChat庫中執(zhí)行注入,會得到WeChat_patched文件
cd ~/Downloads/Payload/WeChat.app/ insert_dylib @executable_path/wechatinject.dylib ~/Downloads/Payload/WeChat.app/WeChat
替換wechat文件
rm WeChat mv WeChat_patched WeChat
-
重簽名
zsign -f -k ~/Downloads/cert.p12 -p xxxxxx -m xxxxx.mobileprovision -o ~/Downloads/wechat2.ipa ~/Downloads/Payload -
安裝驗證。
參考
https://github.com/TKkk-iOSer/TKTweakDemo