免越狱tweak应用逆向开发

对于已越狱的设备,系统默认安装了mobilesubstrate动态库,提供一个系统级的入侵管道,所有的tweak都可以依赖它来进行开发。而对于没有越狱的手机,我们需要向目标app注入libsubstrate.dylib动态库,才能使程序在运行时加载我们编写的动态库。

环境准备:
sudo clone git://github.com/DHowett/theos.git /opt/theos
sudo chmod 777 /opt/theos/bin/ldid
  • 配置dpkg-deb下载dm.pl,重命名为dpkg-deb后,放到/opt/theos/bin/
sudo chmod 777 /opt/theos/bin/dpkg-deb
sudo chmod u+x /usr/local/bin/optool

然后命令行输入optool查看是否有输出,有的话说明安装成功。


实现部分:
1. 在tweak工程目录下编译代码,生成目标库:
make

可以在./.theos/obj/debug下找到生成的目标库xxx.dylib

2.修改目标库依赖文件的相对地址:
otool -L xxx.dylib
修改前依赖库

查看动态库的依赖库,图中可以看到两个架构的依赖库,其中大部分都是系统库,只有一个需要我们注入的库。由于

/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate

在实际设备上没有对应的文件,我们需要修改其地址为相对地址:

install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib xxx.dylib

如果系统显示的是/usr/lib/libsubstrate.dylib而不是/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate的话,使用以下命令:(命令中只有依赖地址不同,@loader_path指明相对地址。)

install_name_tool -change/usr/lib/libsubstrate.dylib @loader_path/libsubstrate.dylib xxx.dylib

完成之后我们再次查看依赖库:


修改后依赖库

可以看到,依赖库加载地址已经成功被修改

3.注入xxx.dylib到目标应用中

拷贝libsubstrate.dylib和我们编写的库xxx.dylib到需要hook的应用的zzz.app目录下,修改应用目录下二进制文件的zzz的Load Commands段:

optool install -c load -p "@executable_path/xxx.dylib" -t ./zzz
#注:zzz为二进制文件名
4.重签名和打包应用:
codesign -f -s ‘iPhone Developer: xxx(xxx)’ —entitlements xxx.entitlements zzz.app

此处也可以简单的使用工具一步完成ios-app-signer生成ipa

ios-app-signer应用截图
5.使用 iTunes 或 PP助手 或 iTool 等方法安装食用~

知识扩展链:

移动App入侵与逆向破解技术-iOS篇
免越狱版 iOS 抢红包插件
iOS微信抢红包Tweak安装教程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容