微信免越狱抢红包速成手册

65次阅读

共计 5793 个字符,预计需要花费 15 分钟才能阅读完成。

很早之前就有开发者推出了红包插件,在 iOS 平台,从越狱到非越狱都能欢快的抢抢抢,只不过在不流行越狱的现在,大家还是倾向免越狱抢红包。在网上的免越狱教程都略显复杂,时间长了再次执行的时候还得翻看教程,本篇文章就是为了简化流程,让大家可以更有效率的抢红包。

本文所有操作均在 macOS 中执行。

1. 安装 Theos

1.1 必备条件

  • Homebrew
  • Xcode(必须)

然后安装 ldidxz

 brew install ldid xz

1.2 设置环境变量THEOS,执行如下命令:

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

要想让配置生效,必须重启终端或者执行 source ~/.profile。然后通过echo $THEOS 可以查看是否生效。

1.3 检出 Theos 项目:

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

1.4 获取iOS SDK

目前 Xcode 提供的 SDK 中不再包含私有库,不过我们可以从 SDKs repo 获取到。

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 即可。

2.1 准备工作

  • rebuildapp
  • WeChatRedEnvelop

rebuildapp是一款重新打包 app 工具,支持注入 dylib、创建plist 以及自动读取开发者证书功能,通过 rebuildapp 可以极大简化 app 的注入流程,避开各种坑。

// 安装
npm install rebuildapp -g

需要提前准备的文件如下:

  • embedded.mobileprovision
  • WeChatRedEnvelop.dylib
  • 脱壳过的微信 app,从 pp 助手下载越狱版本或者砸壳获得

embedded.mobileprovisioniOS 授权和描述文件,目前可以免费申请 7 天证书,满足临时使用,我们可以在 Xcode 中创建证书,如下图所示。

生成的文件在~/Library/MobileDevice/Provisioning Profiles/,但是该文件夹中文件名辨识度不高,我们可以用鼠标选中文件,然后按空格预览文件内容。

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

本文同步发表于作者博客: 微信免越狱抢红包速成手册

正文完
 0