当前位置:   article > 正文

Android中接入hook框架:lancet-base

Android中接入hook框架:lancet-base

me.ele:lancet-base是"饿了么"开发的Android平台的开源hook框架,GitHub地址为:https://github.com/eleme/lancet。

此框架的优点如下:
1.编译速度快, 并且支持增量编译。
2.简洁的 API, 几行 Java 代码完成注入需求。
3.没有任何多余代码插入 apk。
4.支持用于 SDK, 可以在SDK编写注入代码来修改依赖SDK的App。

接入me.ele:lancet-base框架的步骤如下:

1.在项目根目录的build.gradle中添加:

  1. dependencies {
  2. ...
  3. classpath 'com.bytedance.tools.lancet:lancet-plugin-asm6:1.0.2'
  4. }

2.在主module的build.gradle中添加:

apply plugin: 'me.ele.lancet'

3.在module的build.gradle中添加:

  1. dependencies {
  2. ...
  3. implementation "me.ele:lancet-base:1.0.6"
  4. }

4.在module中添加hook代码:

  1. import me.ele.lancet.base.Origin;
  2. import me.ele.lancet.base.annotations.Proxy;
  3. import me.ele.lancet.base.annotations.TargetClass;
  4. @Proxy("i")
  5. @TargetClass("android.util.Log")
  6. public static int anyName(String tag, String msg) {
  7. msg = msg + "lancet";
  8. return (int) Origin.call();
  9. }

说明:
1. @TargetClass:指定了将要被织入代码的目标类,此处为:android.util.Log。
2. @Proxy:指定了将要被织入代码的目标方法,此处为:i。
3. Origin.call():代表了 Log.i() 这个目标方法。
4. 所以这个示例Hook方法的作用就是:将代码里出现的所有 Log.i(tag,msg) 代码替换为Log.i(tag,msg + "lancet")。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/863885
推荐阅读
相关标签
  

闽ICP备14008679号