今天介绍如何制作免越狱版本的插件
一、原理
1.越狱机器之所以能使用 tweak,主要是因为在越狱的时候,手机里就安装了 mobilesubstrate 这个库,这个库的作用就是能在程序运行的时候动态加载我们自己写的 dylib 动态运行库。而由于非越狱手机系统里面是没有这个库的,所以我们需要直接将这个库打包进 ipa 当中,使用它的 API 实现注入。
二、砸壳
1.直接在 PP 助手下载
2.自己在越狱手机上应用进行砸壳
这里就不多啰嗦了,我其他文章进行过详细的介绍
三、创建Tweak项目
这里就不多介绍了,我其他文章里有详细创建过程
四、dylib动态库
1.编译成功后在工程的.theos/obj/debug(.theos是个隐藏目录)目录下会找到我们需要的动态库.dylib结尾的文件。
2.检查依赖项,使用 macOS 自带的 otool 工具就可以进行依赖项检查,终端输入
otool -L wxRedTweak.dylib
CyduaSubstrate这个库越狱手机中才有,我们需要用 libsubstrate.dylib替换这个库。
3.查看Theos安装目录/opt/theos/lib中是否有 libsubstrate.dylib文件,如果没有可以到https://github.com/kokoabim/iOSOpenDev/blob/master/lib/libsubstrate.dylib
4.使用 install_name_tool 命令修改动态库的路径,指向 app 二进制文件的同级目录。
install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib wxRedTweak.dylib
5.查看修改以后的依赖项
otool -L wxRedTweak.dylib
可以看到CydiaSubstrate 已经变更为libsubstrate.dylib。
6.接下来,就需要将我们的库注入到微信的二进制文件中,可以使用开源的 optool 工具。
编译安装 optool 工具
git clone --recursive https://github.com/alexzielenski/optool.git
然后用Xcode打开编译后,把Product目录下的optool二进制文件拷贝到/usr/local/bin目录下。
7.将砸壳过的 ipa 文件解压,然后将 libsubstrate.dylib 与 wxRedTweak.dylib 拷贝到解压后的 WeChat.app 目录下。
8.使用 optool 把 wxRedTweak.dylib 注入到二进制文件中:
optool install -c load -p "@executable_path/wxRedTweak.dylib" -t WeChat.app/WeChat
五、打包并重签名
1.打包 ipa 与重签名可以直接使用图形化工具 ios-app-signer 来完成。
这个工具可以自动加载出本机的证书以及 Provisioning Profile 文件,使用起来十分方便,当然也可以手动选择证书文件。
2.如果是使用个人开发者证书,需要先将设备的 UUID 加到 Provisioning Profile 中。
我这里是直接从一个 archive 过的应用中提取 embedded.mobileprovision 文件,并在 Provisioning Profile 一栏中选择 Choose Custom File 使用这个文件。
点击 start 后,指定保存路径,iOS App Signer 就会帮你搞定所有事情。
六、安装
1.在 iOS App Signer 完成打包与重签名后,我们就可以进行安装了。
安装有两种方法,一种是使用 iTool 工具安装 ipa 文件。
另外一种是针对有 XCode 的伙伴,在菜单 - Window - Devices 中打开设置窗口。点击 Installed Apps 栏下面的 + 号就可以选择 ipa 文件进行安装了。
网友评论