3Teak - 原理

 

基本流程

编写代码

make编译

 

theos中出现了一个动态库,说明make操作,把编写的代码生成了一个动态库。

make package

把动态库打包成了一个deb文件

make package:这个指令,是包含了make中的「编译」功能的,所以以后不用make,直接make package就好

make install

  1. 远程登录手机(根据环境变量)
  2. 传递deb包数据
  3. Cydia安装deb包
  4. Cydia把里面的动态库拿出来

      1. plist文件:里面存了靶App的Bundle ID 
    1. 放到这里

    1. 这个东东提供了安装机制

影响靶App

点击靶App的时候,Cydia Substrate会看文件夹下的plist文件写的bundle ID,一旦发现bundle ID匹配,就会把动态库载入内存,对靶App的内存代码(二进制代码)进行修改。

我们并木有改过靶App的代码,只是在内存中进行了修改,而非硬盘中的数据。

验证

 

问题

  1. 没脱壳的App是否支持tweak?
    1. 是的
  2. tweak插件是否永久有效?
    1. 一旦靶App目标类修改了,会失效
  3. 未越狱手机是否支持tweak?
    1. 当然不可以 - Cydia Substree一定在越狱机上做的
  4. 能不能对游戏进行tweak?
    1. 目前不可以,需要学下如何tweak C
    2. 游戏的C代码做了混淆,比较麻烦


汇编层面分析

靶程序

tweak程序

汇编跟踪

然后Step into这个方法

无tweak

注意看顶部方法名

来到了ViewController的click方法

有tweak

注意看顶部方法名

tweak_test动态库中的方法