Theos 是一個越獄開發工具包,安裝方法能夠參考 Wiki。php
dpkg(Debian Packager) 是 Theos 依賴工具之一,可使用 dpkg 製做 deb,Theos 開發的插件都會以 deb 的格式進行發佈,在安裝 Theos 以前須要安裝 dpkg,安裝藉助於 Homebrew 安裝,確保先安裝 Homebrew。git
brew install dpkggithub
Theos 開發中,iOS 文件的簽名使用 Idid 工具完成,代替了 XCode 中的 Codesign。bash
brew install ldid微信
brew install xz
sudo cpan IO::Compress::Lzma架構
將 Theos 安裝在 /opt/theos 目錄下app
sudo Git clone --recursive https://github.com/theos/theos.git /opt/theos框架
將 /opt/theos 權限改成本身iphone
sudo chown \((id -u):\)(id -g) /opt/theoside
配置環境變量
export THEOS=/opt/theos
export PATH=/opt/theos/bin/:$PATH
測試是否安裝成功
nic.pl
關閉終端,再次啓動,環境變量失效,nic.pl 執行失敗,能夠將環境變量寫入文件,沒必要每次都設置環境變量
touch ~/.bash_profile
open -t ~/.bash_profile
source ~/.bash_profile
以啓動微信,彈出彈框爲力說明
//用於描述這個 deb 包的名字,命名方式和 bundle identifier 相似,能夠按需更改 Package: com.ecarx.wechatphone //用於描述工程的名字,能夠按需更改 Name: WeChatPhone //用於描述 deb 包的依賴,以來是指程序運行的基本條件,若是iOS不知足依賴中所定義的條件,則 tweak 沒法正常工做,能夠按需更改 Depends: mobilesubstrate //用於描述這個 deb 包的版本號,能夠按需更改 Version: 0.0.1 //用於描述 deb 安裝的目標設備架構,不要更改 Architecture: iphoneos-arm //deb 包的簡單介紹,能夠按需更改 Description: An awesome MobileSubstrate tweak! //用於描述 deb 包的維護人,即 deb 包的製做者而非 tweak 的做者,能夠按需更改 Maintainer: Mr.Roy Author: Mr.Roy //用於描述 deb 包所屬的程序類別,不要更改 Section: Tweaks
//經過 SSH 服務,將安裝包安裝手機的 IP 指向的手機 THEOS_DEVICE_IP = 192.168.1.100 //arm ARCHS = arm64 //SDK 版本 SDKVERSION = 11.3 //最低支持系統 Target = iphone:latest:8.0 //指定工程的 common.mk ,固定寫法,不要修改 include $(THEOS)/makefiles/common.mk //創建工程時在命令行輸入的 Project Name,與 Control Name 對應,不要更改 TWEAK_NAME = WeChatPhone //指定工程包含的源文件,若是多個,用空格分開,能夠按需更改 WeChatPhone_FILES = Tweak.xm //指定工程的 mk 文件,由於新建的是 tweak 工程,因此是 tweak.mk,能夠是 application.mk,tool.mk 等 include $(THEOS_MAKE_PATH)/tweak.mk //安裝後退出應用 after-install:: install.exec "killall -9 WeChat"
%hook MicroMessengerAppDelegate - (_Bool)application:(id)arg1 didFinishLaunchingWithOptions:(id)arg2 { %orig; [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"tel://183187722753"] options:@{} completionHandler:nil]; return YES; } %end
/makefiles/common.mk: No such file or directory
/tweak.mk: No such file or directory
No rule to make target `/tweak.mk'. Stop.
設置環境變量:export THEOS=/opt/theos
make[3]: *** [/Users/wangyaoguo/Desktop/Theos/hellocalculator/.theos/obj/debug/arm64/Tweak.xm.5956ecdb.o] Error 1
make[2]: *** [/Users/wangyaoguo/Desktop/Theos/hellocalculator/.theos/obj/debug/arm64/HelloCalculator.dylib] Error 2
make[1]: *** [internal-library-all_] Error 2
make: *** [HelloCalculator.all.tweak.variables] Error 2
檢查Tweak.xm 文件是否正確
在 iOS 越獄開發中,各類破解補丁統稱爲 Tweak, 一般咱們說的越獄開發,都是指開發一個 Tweak。Tweak 依賴於一個名叫 Cydia Substrate 的動態庫,也稱爲 MobileSubstrate,是 Cydia 做者 Jay Freeman 的做品,它的主要功能是 hook 某個應用,修改代碼,替換其實現方法,Cydia 中的 Tweak 都是基於 Cydia Substrate 實現的。
Tweak 實質就是 iOS 平臺的動態庫,iOS 平臺有兩種形式的動態庫,一種是 dylib,一種是 framework。Tweak 利用 dylib 這種形式的動態庫,能夠在 /Library/MobileSubstrate/DynamicLibraries 目錄下查看存在的全部 Tweak。
Tweak.xm 是 Tweak 的核心代碼,其中 %hook,%orig,%log 等都是 theos 對 MobileSubstrate 提供的函數的宏封裝,MobileSubstrate 提供的方法的介紹能夠參考 Cydia Substrate。
Tweak 的發佈有兩種方式,一種是在越獄上安裝 deb 安裝包,二是利用開發證書將補丁打包成 ipa,這種不越獄也能夠安裝。