谈谈Android上的Method Hook

1,033 阅读1分钟

什么是Method Hook,也就是函数执行hook before 以及 after,通俗的讲就是函数执行前做手脚,执行后做点手脚

Method Hook的几种方式

  1. xposed
  2. jvmti
  3. asm/javasist + transform

如果要hook大量的method来说,xposed jvmti 带来额外性能开销,出于对apm需求 所以还是不得不掌握一项asm/javasist + transform 的方式

关于jvmti用法参考openjdk jvmti test github.com/openjdk/jdk…

经验告诉我还是使用asm+transform比较好,相比于javasist,无需添加classPath,举个例子 fun A(b:B) 如果B 没被添加classPath则该A方法无法被植入代码

asm+transform 推荐涛哥写的库:github.com/Vinctor/Uat… 完成度高,定制化选项足够

需要注意就是log 需要注意频次,不然导致执行卡顿甚至crash

  1. pltHook or inlineHook 定制Trace
    github.com/wuyouuuu/wy…