07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本

theos-tweak的开发过程

07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本

  • 编写Tweak代码
    07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本
  • $ make :编译Tweak代码为动态库(* dylib)
    07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本
  • $ make package :将dylib打 包为deb文件
    07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本
  • $ make install :将deb文件传送到手机上,通过Cydia安装deb
    07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本
  • 插件将会安装在 /Library/MobileSubstrate/DynamicLibraries 文件夹中
    • *.dylib: 编译后的Tweak代码
    • *.plist: 存放着需要hook的APP ID

theos-tweak的运行过程

07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本

  • 当打开APP时
    • Cydia Substrate 会加载plist文件,发现有对应的APP, 就会让APP去加载对应的dylib(Cydia已自动安装的插件)
    • 修改APP内存 中的代码逻辑,去执行dylib中 的函数代码
  • 所以,theos的tweak并不会对APP原来的可执行文件进行修改,仅仅是修改了内存中的代码逻辑

tweak插件的卸载

方式一

  • 直接从 /Library/MobileSubstrate/DynamicLibraries 文件夹删除插件对应的Plist文件和dylib文件
  • 这种方式卸载不是很干净

方式二

  • 通过Cydia卸载
  • 推荐这种方式, 卸载比较彻底
    07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本

多文件开发

  • 加入文件分布是这样的
    07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本

  • 首先加载文件是通过 Makefile 文件设置
    07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本

  • xm文件不支持通配符, 不然就会报错07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本

  • 导入文件的时候
    07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本

发布release版本插件

make package debug=0

07-3-theos-tweak的开发、运行过程、卸载、多文件开发以及发布release版本

疑问

  • 未脱壳的APP是否支持tweak?
    • 支持,因为tweak是在内存中实现的,并没有修改.app包中的可执行文件
  • tweak效果是否永久性的?
    • 取决于tweak中用到的APP代码是否被修改过
  • 如果一旦更新APP,tweak会不会失效?
    • 取决于tweak中用到的APP代码是否被修改过
  • 未越狱的手机是否支持tweak?
    • 不支持
  • 能不能对Swift\C函数进行tweak?
    • 可以,方式跟OC不一样
  • 能不能对游戏项目进行tweak?
    • 可以
    • 但是游戏大多数是通过C++\C#编写的,而且类名、函数名会进行混淆操作