微信免越獄搶紅包速成手冊

很早以前就有開發者推出了紅包插件,在iOS平臺,從越獄到非越獄都能歡快的搶搶搶,只不過在不流行越獄的如今,你們仍是傾向免越獄搶紅包。在網上的免越獄教程都略顯複雜,時間長了再次執行的時候還得翻看教程,本篇文章就是爲了簡化流程,讓你們能夠更有效率的搶紅包。c++

本文全部操做均在macOS中執行。git

1. 安裝Theos

1.1 必備條件

  • Homebrew
  • Xcode(必須)

而後安裝ldidxzgithub

brew install ldid xz

1.2 設置環境變量THEOS,執行以下命令:

echo "export THEOS=~/theos" >> ~/.profile

要想讓配置生效,必須重啓終端或者執行source ~/.profile。而後經過echo $THEOS能夠查看是否生效。npm

1.3 檢出Theos項目:

$ git clone --recursive https://github.com/theos/theos.git $THEOS

1.4 獲取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腳本或者是從手機上拷貝等方式。

2. 從新打包app

咱們使用WeChatRedEnvelop這個項目來實現搶紅包功能,你們能夠換成其餘項目,最終拿到dylib便可。bootstrap

2.1 準備工做

  • rebuildapp
  • WeChatRedEnvelop

rebuildapp是一款從新打包app工具,支持注入dylib、建立plist以及自動讀取開發者證書功能,經過rebuildapp能夠極大簡化app的注入流程,避開各類坑。微信

// 安裝
npm install rebuildapp -g

須要提早準備的文件以下:app

  • embedded.mobileprovision
  • WeChatRedEnvelop.dylib
  • 脫殼過的微信app,從pp助手下載越獄版本或者砸殼得到

embedded.mobileprovisioniOS受權和描述文件,目前能夠免費申請7天證書,知足臨時使用,咱們能夠在Xcode中建立證書,以下圖所示。curl

clipboard.png

生成的文件在~/Library/MobileDevice/Provisioning Profiles/,可是該文件夾中文件名辨識度不高,咱們能夠用鼠標選中文件,而後按空格預覽文件內容。iphone

clipboard.png

2.2 編譯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是隱藏文件夾。

2.3 建立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.dylibembedded.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

2.4 注入動態庫+重簽名

執行一句話命令:

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...

3. 總結流程

  1. 安裝Theos
  2. 準備 embedded.mobileprovision
  3. 編譯 WeChatRedEnvelop.dylib
  4. 執行rebuildapp new建立工做區
  5. 文件embedded.mobileprovisionWeChatRedEnvelop.dylib放入工做區
  6. 處理WeChatRedEnvelop.dylib依賴
  7. 使用rebuildapp執行打包app
本文同步發表於做者博客: 微信免越獄搶紅包速成手冊
相關文章
相關標籤/搜索