很早以前就有开发者推出了红包插件,在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脚本或者是从手机上拷贝等方式。bootstrap
咱们使用WeChatRedEnvelop这个项目来实现抢红包功能,你们能够换成其余项目,最终拿到dylib
便可。bash
rebuildapp
是一款从新打包app
工具,支持注入dylib
、建立plist
以及自动读取开发者证书功能,经过rebuildapp
能够极大简化app
的注入流程,避开各类坑。微信
// 安装
npm install rebuildapp -g
复制代码
须要提早准备的文件以下:app
embedded.mobileprovision
是iOS
受权和描述文件,目前能够免费申请7天证书,知足临时使用,咱们能够在Xcode
中建立证书,以下图所示。curl
生成的文件在~/Library/MobileDevice/Provisioning Profiles/
,可是该文件夹中文件名辨识度不高,咱们能够用鼠标选中文件,而后按空格预览文件内容。
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
本文同步发表于做者博客: 微信免越狱抢红包速成手册