免越狱tweak应用逆向开发
对于已越狱的设备,系统默认安装了mobilesubstrate动态库,提供一个系统级的入侵管道,所有的tweak都可以依赖它来进行开发。而对于没有越狱的手机,我们需要向目标app注入libsubstrate.dylib动态库,才能使程序在运行时加载我们编写的动态库。
访问:http://www.jianshu.com/p/cd1f8ae46a3c获得更好的阅读体验~
环境准备:
- [ios-app-signer:应用签名打包工具(可选)](https://github.om/DanTheMan827/ios-app-- signer.git)
- class-dump:头文件导出工具
- theos
sudo clone git://github.com/DHowett/theos.git /opt/theos
- libsubstrate.dylib下载到/opt/theos/lib/
- ldid签名工具下载到/opt/theos/bin/
sudo chmod 777 /opt/theos/bin/ldid
- 配置dpkg-deb下载dm.pl,重命名为dpkg-deb后,放到/opt/theos/bin/
sudo chmod 777 /opt/theos/bin/dpkg-deb
编译安装 optool 工具,下载之后需要修改项目Build Setting中Base SDK项为当前系统sdk,否则可能编译报错:
# 因为 optool 添加了 submodule,因为需要使用 --recuresive 选项,将子模块全部 clone 下来
git clone --recursive https://github.com/alexzielenski/optool.git
cd optool
xcodebuild -project optool.xcodeproj -configuration Release ARCHS="x86_64" build
#编译完成后建议将生成二进制文件放到/usr/local/bin目录下
实现部分:
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
5.使用itunes或pp助手或itool等方法安装食用~
知识扩展链:
免越狱tweak应用逆向开发的更多相关文章
- Delphi 10.2.3 + Xcode 9.2 开发 IOS 程序,免证书+免越狱,真机调试
工具列表: 1,delphi 10.2.3 + PAServer19.0. 2,配置好一些的 PC 一台,建议至少 4 代 intel i5 + 16G + 256GSSD,低于此配置将产生拖延症. ...
- 勾勾街:一个专业的苹果ios app 自助打包的网站,免越狱,免证书签名
众所周知,苹果的APP开发是需要基于MAC环境的,而我们很多的开发者并没有这样的条件,如果单单为发布一款app就去买一台价格昂贵的MAC那成本就太高了! 就算你有一台MAC,也有能力自己开发出一款基于 ...
- iOS逆向开发(1):基础工具 | ssh | scp | socat
小白:小程,我一直想问,什么是逆向来着?是逆向行驶吗? 小程:理解为逆向行驶也没错.一般的项目是从无到有,而逆向是从已有的状态入手,分析出已有的流程与结构的手段. iOS上的逆向开发,是一件有趣的事情 ...
- 勾勾街——一个专注于免越狱免签名的苹果ios APP打包生成的网站
自涛舅舅研发的“苹果ios APP自助生成系统”上线以来,每天都有大量的用户注册和生成免越狱app,为什么? 因为我们有明显的技术优势,APP不需要上架appstore, 生成APP又不需要企业签名证 ...
- iOS逆向开发(8):微信自动添加好友
这一次,小程演示怎么让一个APP自动地运行,从而代替手工的操作.同样以"微信"以例,实现在一个微信群里面,对所有的成员,自动地一个一个地发出添加好友的请求. 知识点还是之前介绍的东 ...
- iPhone屏蔽IOS更新、iPhone系统更新的提示(免越狱,有效期更新至2021年)
iPhone屏蔽IOS更新.iPhone系统更新的提示(免越狱,有效期更新至2021年) 1.在Safari浏览器中粘贴如下链接,按提示打开链接. 输入http://apt.dataage.pub 2 ...
- iphone app的非appstore发布方法及其免越狱安装方法
iphone app的非appstore发布方法及其免越狱安装方法 本文包含两项内容, 1.开发者如何将app导出为可供普通用户在外部安装的ipa文件. 2.用户使用itools来安装ipa格式的 ...
- MachO文件详解--逆向开发
今天是逆向开发的第5天内容--MachO文件(Mac 和 iOS 平台可执行的文件),在逆向开发中是比较重要的,下面我们着重讲解一下MachO文件的基本内容和使用. 一.MachO概述 1. 概述 M ...
- Hook原理--逆向开发
今天我们将继续讲解逆向开发工程另一个重要内容--Hook原理讲解.Hook,可以中文译为“挂钩”或者“钩子”,逆向开发中改变程序运行的一种技术.按照如下过程进行讲解 Hook概述 Hook技术方式 f ...
随机推荐
- (译)Windsor入门教程---第四部分 整合
介绍: 目前为止,已经介绍了应用程序的各个部分.首先是添加了Windsor程序集,然后是添加了控制器工厂,还添加了installer类来注册控制器.虽然但是我们还没用在应用程序中调用他们.在这 ...
- Android开发之FileProvider
最近做项目时,都需要用到FileProvider.于是就研究了下,现总结如下: 官方路径:http://developer.android.com/intl/zh-cn/training/secure ...
- LPC1768定时器普通定时
//其他通道的基本定时功能都能在这里实现 void Time0Mr0Init(u32 arr,u32 psc) { LPC_SC->PCONP |= (1<<1); ...
- HMC5883L地磁传感器驱动
霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域.HMC5883L 包括最先进的高分辨率 HMC118X 系列磁阻传感器,并附带霍 ...
- Binary转换成Hex字符串
想调优别人的代码,网上搜索一下Binary to Hexstring的转换,全是利用printf.scanf之类实现的,效率好低,还是自己想个简单的办法吧! .......此处省略一万字....... ...
- SVN简明课程
Reference: http://www.cnblogs.com/wangkangluo1/archive/2011/08/11/2135312.html 1. 版本控制介绍 1.1. 什么是版本控 ...
- java web面试
1. session和cookie的区别和联系,session的生命周期,多个服务部署时session管理. 原博http://blog.csdn.net/shuaishenkkk/article/d ...
- android TextView实现滚动显示效果
在android中,如果设置了TextView控件为单行显示,且显示的文本太长的话,默认情况下会造成显示不全的情况,这种情况下我们需要设置该控件属性如下: <TextView android:i ...
- webx学习
webx框架学习指南 http://openwebx.org/docs/Webx3_Guide_Book.html webx学习(一)——初识webx webx学习(二)——Webx Framewor ...
- AngularJS中$http服务的简单用法
我们可以使用内置的$http服务直接同外部进行通信.$http服务只是简单的封装了浏览器原生的XMLHttpRequest对象. 1.链式调用 $http服务是只能接受一个参数的函数,这个参数是一个对 ...