dylib动态库注入和重签名打包
make package
先找到之前的tweak文件,进行make package命令,然后会看到
cuilinhaodeMacBook-Pro:~ cuilinhao$ cd /Users/cuilinhao/Desktop/WeChatCrawler-master/crawlertest
cuilinhaodeMacBook-Pro:crawlertest cuilinhao$ ls
Makefile control packages
Tweak.xm crawlerTest.plist
cuilinhaodeMacBook-Pro:crawlertest cuilinhao$ make package
会看到obj下有一个动态库
修改动态库依赖
查看动态库依赖项
otool -L crawlerTest.dylib
会看到
上面是因为越狱手机中才会用到的CyduaSubstrate库,我们需要用 libsubstrate.dylib替换这个库
如何替换呢?
先查看Theos安装目录/opt/theos/lib中是否有 libsubstrate.dylib文件,如果没有可以到https://github.com/kokoabim/iOSOpenDev/blob/master/lib/libsubstrate.dylib 下载
查看如下:
cuilinhaodeMacBook-Pro:~ cuilinhao$ ls
Applications Library Public ldid usb.sh
Desktop Movies __MobPods__ login.sh
Documents Music get-pip.py make.sh
Downloads Pictures hitTest.sh theos
cuilinhaodeMacBook-Pro:~ cuilinhao$ open theos
cuilinhaodeMacBook-Pro:~ cuilinhao$
使用install_name_tool修改动态库的路径,指向 app 二进制文件的同级目录
install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib WXRedPackage.dylib
修改后再次查看动态了依赖项
otool -L crawlerTest.dylib
执行结果如下,如果原来库文件路径变成了新的相对路径说明成功。
将动态链接库注入二进制文件中
如果电脑中没有optool直接下载工程,https://github.com/hzpqt/optool-,因为opool添加了submodule,所以建议使用一下命令clone,用xcode编译,用Xcode打开编译后,把Product目录下的optool二进制文件拷贝到
/usr/local/bin
目录下,拷贝libsubstrate.dylib和我们自己编写并修改过的crawlerTest.dylib拷贝到WeChat.app目录下
在开始打包之前,请先将 WeChat.app 里面的 Watch 目录删除,这个目录是跟 Watch 有关的,如果不删除的话,会有问题
修改微信二进制文件加载Load Commands段
命令到砸壳后的ipa文件夹,然后
cuilinhaodeMacBook-Pro:~ cuilinhao$ cd /Users/cuilinhao/Desktop/WeChatCrawler-master/Applications
cuilinhaodeMacBook-Pro:Applications cuilinhao$ optool install -c load -p "@executable_path/crawlerTest.dylib" -t WeChat.app/WeChat
执行结果
签名打包
使用iOS App Signer 他是开源的,可以在https://github.com/DanTheMan827/ios-app-signer找到安装包和github源码链接。
直接star就可以了
Input File : 拖入重签名 ipa文件,会自动生成路径
Signing Certificate : 选择重签名证书,请确保证书已被添加. (双击证书即可)
Provisioning Profile : 选择重签名描述文件,请确保证书已被添加. (双击.mobileprovision文件即可。切勿选择 Re-Sign Only ,无效。)
然后用pp助手或者iTools 去安装。