如何安装Tweak动态生成的.dylib文件
简述
当我们通过theos,为越狱机器写了一些hook代码,然后通关<code>make package install</code>命令,成功安装到手机之后,发现代码的功能已经和我们的需求吻合,那么,下面要做的就是如何把生成的.dylib文件注入到二进制文件中,然后成功安装到非越狱的手机设备中.下文中,<code>ioswechatselectall.dylib</code>就是我通过代码生成的文件.
1.更改环境
这是十分重要的一步,如果没有执行这一步,直接通过<code>yololib</code>工具注入,然后安装到非越狱手机上就会出现应用闪退的情况.(因为tweak会默认依赖越狱环境,在这里浪费了太多的时间)
1>找到你生成的.dylib文件
在你的tweak目录下,应该会找到你通过<code>make package install</code>或者<code>make package</code>指令生成的.dylib文件,
/代码目录/obj/ioswechatselectall.dylib
2>通过 <code>otool -L </code>命令查看你生成的.dylib文件
otool -L ioswechatselectall.dylib
Paste_Image.png
如图所示,这里有对CydiaSubstrate的依赖 , 这是不行的 , 这个是theos在越狱机上特有的, 在非越狱机上需要更改此依赖
3>修改依赖
首先要找到<code>libsubstrate.dylib </code>文件,该文件应该在<code>/opt/thoes/lib/</code>目录下,然后将其拷贝到与你生成的的.dylib一个目录下,通过下面的指令修改依赖,
install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib ioswechatselectall.dylib
然后重新查看<code>ioswechatselectall.dylib</code>
会发现依赖已经被修改完毕
Paste_Image.png
2 重新签名ioswechatselectall.dylib 和libsubstrate.dylib(很重要)
codesign -f -s 自己证书名称 要签名的文件
Paste_Image.png
3 添加可执行文件的依赖
此处用的是<code>insert_dylib</code>
下载地址在https://github.com/Tyilo/insert_dylib
编译后,将其与其他两个文件拷贝到同一目录下
然后将其插入到执行文件中
Paste_Image.png
4.其他
1.将ioswechatselectall.dylib 和libsubstrate.dylib拷贝进你的WeChat.app
2.记住要把WeChat_patched的名字改回来WeChat
5打包
用iResign工具或者iOS App Signer修改bundle id 并且重签整个应用,并打包生成.ipa文件,就可以成功安装在非越狱的手机设备中