很早以前就有開發者推出了紅包插件,在iOS
平臺,從越獄到非越獄都能歡快的搶搶搶,只不過在不流行越獄的如今,你們仍是傾向免越獄搶紅包。在網上的免越獄教程都略顯複雜,時間長了再次執行的時候還得翻看教程,本篇文章就是爲了簡化流程,讓你們能夠更有效率的搶紅包。c++
本文全部操做均在macOS
中執行。git
而後安裝ldid
和xz
github
brew install ldid xz
THEOS
,執行以下命令:echo "export THEOS=~/theos" >> ~/.profile
要想讓配置生效,必須重啓終端或者執行source ~/.profile
。而後經過echo $THEOS
能夠查看是否生效。npm
Theos
項目:$ git clone --recursive https://github.com/theos/theos.git $THEOS
iOS SDK
:目前Xcode
提供的SDK
中再也不包含私有庫,不過咱們能夠從SDKs repo獲取到。json
curl -LO https://github.com/theos/sdks/archive/master.zip TMP=$(mktemp -d) unzip master.zip -d $TMP mv $TMP/sdks-master/*.sdk $THEOS/sdks rm -r master.zip $TMP
新版Theos的已內置CydiaSubstrate.framework
(位於$THEOS/vendor/lib
),因此不須要像網上其它教程中說的須要運行bootstrap.sh腳本或者是從手機上拷貝等方式。
咱們使用WeChatRedEnvelop這個項目來實現搶紅包功能,你們能夠換成其餘項目,最終拿到dylib
便可。bootstrap
rebuildapp
是一款從新打包app
工具,支持注入dylib
、建立plist
以及自動讀取開發者證書功能,經過rebuildapp
能夠極大簡化app
的注入流程,避開各類坑。微信
// 安裝 npm install rebuildapp -g
須要提早準備的文件以下:app
embedded.mobileprovision
是iOS
受權和描述文件,目前能夠免費申請7天證書,知足臨時使用,咱們能夠在Xcode
中建立證書,以下圖所示。curl
生成的文件在~/Library/MobileDevice/Provisioning Profiles/
,可是該文件夾中文件名辨識度不高,咱們能夠用鼠標選中文件,而後按空格預覽文件內容。iphone
WeChatRedEnvelop.lib
注意:能夠先嚐試下make
編譯
若是出現fatal error: 'foundation/foundation.h' file not found
錯誤能夠參考個人解決方案,修改Makefile
內容,主要調整TARGET
字段。
THEOS_DEVICE_IP = localhost THEOS_DEVICE_PORT = 2222 ARCHS = armv7 arm64 TARGET = iphone:11.2:7.0 include $(THEOS)/makefiles/common.mk SRC = $(wildcard src/*.m) TWEAK_NAME = WeChatRedEnvelop $(TWEAK_NAME)_FILES = $(wildcard src/*.m) src/Tweak.xm $(TWEAK_NAME)_FRAMEWORKS = UIKit #指定版本 _THEOS_TARGET_LDFLAGS += -current_version 1.0 _THEOS_TARGET_LDFLAGS += -compatibility_version 1.0 include $(THEOS_MAKE_PATH)/tweak.mk
檢出WeChatRedEnvelop
代碼,執行make
過程以下:
$ git clone https://github.com/buginux/WeChatRedEnvelop.git $ cd WeChatRedEnvelop $ make # > Making all for tweak WeChatRedEnvelop… # ==> Preprocessing Tweak.xm… # ==> Compiling Tweak.xm (armv7)… # ==> Compiling XGPayingViewController.m (armv7)… # ... # ==> Signing WeChatRedEnvelop…
.theos/obj/debug/WeChatRedEnvelop.dylib
就是咱們最終須要的須要的動態庫,須要注意的是.theos
是隱藏文件夾。
rebuildapp
工做區經過rebuildapp
建立工做區,咱們輸入目錄名稱,以及保存的目錄便可完成。
rebuildapp --new ? input project name: wechat ? which directory do you want to init to ? (default is current directory ./): Success to download repo resign-app-template#master to /Users/neo/fe/tweak-demo/
工做區主要結構以下:
. ├── README.md ├── embedded.mobileprovision # iOS受權和描述文件,前文獲取xxx.mobileprovision替換爲同名文件 ├── lib │ └── WeChatRedEnvelop.dylib # 前文編譯文件放到該目錄下 ├── package-lock.json └── tool # 工具庫 ├── libsubstrate.dylib └── yololib
咱們須要把WeChatRedEnvelop.dylib
和embedded.mobileprovision
放到對應位置。
而後針對WeChatRedEnvelop.dylib
,咱們還須要處理裏面的依賴項。
otool -L WeChatRedEnvelop.dylib WeChatRedEnvelop.dylib (architecture armv7): /Library/MobileSubstrate/DynamicLibraries/WeChatRedEnvelop.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1349.1.0) /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0, current version 1348.0.0) /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 3600.5.2) /usr/lib/libsubstrate.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.4.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0) WeChatRedEnvelop.dylib (architecture arm64): /Library/MobileSubstrate/DynamicLibraries/WeChatRedEnvelop.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1349.1.0) /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0, current version 1348.0.0) /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 3600.5.2) /usr/lib/libsubstrate.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.4.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
這裏/usr/lib/libsubstrate.dylib
使咱們須要關注的,使用 install_name_tool
命令修改動態庫的路徑,指向 app
二進制文件的同級目錄。
若是看到的不是/usr/lib/libsubstrate.dylib
而是/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate
,按照一樣方式處理就好。
install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib WeChatRedEnvelop.dylib
執行一句話命令:
rebuildapp --auto ~/Downloads/apps/微信-7.0.5\(越獄應用\).ipa
總體操做流程大概以下,咱們須要選擇正確的證書,--auto
命令會自動安裝app
到已鏈接手機中。
output
目錄也保留有ipa
文件。
Will auto serach mobileprovision and identity Begin resign... 證書以下,請選擇一個(輸入序號如:1)便可 1) DDDDDDDDDDDDDDDDDD "iPhone Developer: test@qq.com (VVVVVVVV)" 2) GGGGGGGGGGGGGGGGGG "iPhone Developer: Xiao (YYYYYYY)" 2 valid identities found warn Enter your choice: 1 [提示]您選擇的證書爲:iPhone Developer: test@qq.com (VVVVVVVV) [執行]文件驗證開始 [執行]文件驗證結束 [執行]Entitlements處理結束 [執行]開始驗證provisionfile與證書是否匹配 [提示]所選證書VVVVVVVV)與provisionfile中不匹配,是否繼續?繼續請按1 warn Enter your choice: 1 [執行]解包開始 [執行]解包結束 [執行]拷貝/Users/neo/fe/tweak-demo/wx/workSpace/resign.mobileprovision-->/Users/neo/fe/tweak-demo/wx/workSpace/Payload/WeChat.app/embedded.mobileprovision開始 [執行]拷貝結束 [執行]拷貝/Users/neo/fe/tweak-demo/wx/tool/libsubstrate.dylib-->/Users/neo/fe/tweak-demo/wx/workSpace/Payload/WeChat.app開始 [執行]拷貝結束 [執行]拷貝WeChatRedEnvelop.dylib-->/Users/neo/fe/tweak-demo/wx/workSpace/Payload/WeChat.app開始 [執行]拷貝結束 [執行]修改info.plist開始 [執行]修改info.plist結束 [執行]簽名開始 Reading binary: /Users/neo/fe/tweak-demo/wx/workSpace/Payload/WeChat.app/WeChat [執行]簽名結束 [執行]壓縮開始 [執行]壓縮結束 [成功]文件重簽名ok了,趕快去試試吧 Finish resign...
Theos
embedded.mobileprovision
WeChatRedEnvelop.dylib
rebuildapp new
建立工做區embedded.mobileprovision
、WeChatRedEnvelop.dylib
放入工做區WeChatRedEnvelop.dylib
依賴rebuildapp
執行打包app
本文同步發表於做者博客: 微信免越獄搶紅包速成手冊