theos-tweak的开发过程
- 编写Tweak代码
- $ make :编译Tweak代码为动态库(* dylib)
- $ make package :将dylib打 包为deb文件
- $ make install :将deb文件传送到手机上,通过Cydia安装deb
- 插件将会安装在
/Library/MobileSubstrate/DynamicLibraries
文件夹中- *.dylib: 编译后的Tweak代码
- *.plist: 存放着需要hook的APP ID
theos-tweak的运行过程
- 当打开APP时
- Cydia Substrate 会加载plist文件,发现有对应的APP, 就会让APP去加载对应的dylib(Cydia已自动安装的插件)
- 修改APP内存 中的代码逻辑,去执行dylib中 的函数代码
- 所以,theos的tweak并不会对APP原来的可执行文件进行修改,仅仅是修改了内存中的代码逻辑
tweak插件的卸载
方式一
- 直接从
/Library/MobileSubstrate/DynamicLibraries
文件夹删除插件对应的Plist文件和dylib文件 - 这种方式卸载不是很干净
方式二
- 通过Cydia卸载
- 推荐这种方式, 卸载比较彻底
多文件开发
-
加入文件分布是这样的
-
首先加载文件是通过
Makefile
文件设置
-
xm文件不支持通配符, 不然就会报错
-
导入文件的时候
发布release版本插件
make package debug=0
疑问
- 未脱壳的APP是否支持tweak?
- 支持,因为tweak是在内存中实现的,并没有修改.app包中的可执行文件
- tweak效果是否永久性的?
- 取决于tweak中用到的APP代码是否被修改过
- 如果一旦更新APP,tweak会不会失效?
- 取决于tweak中用到的APP代码是否被修改过
- 未越狱的手机是否支持tweak?
- 不支持
- 能不能对Swift\C函数进行tweak?
- 可以,方式跟OC不一样
- 能不能对游戏项目进行tweak?
- 可以
- 但是游戏大多数是通过C++\C#编写的,而且类名、函数名会进行混淆操作