欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Android中接入hook框架:lancet-base

Android中接入hook框架:lancet-base

2025/5/7 14:52:58 来源:https://blog.csdn.net/chenzhengfeng/article/details/140588238  浏览:    关键词: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中添加:

dependencies {...classpath 'com.bytedance.tools.lancet:lancet-plugin-asm6:1.0.2'
}

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

apply plugin: 'me.ele.lancet'

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

dependencies {...implementation "me.ele:lancet-base:1.0.6"
}

4.在module中添加hook代码:

import me.ele.lancet.base.Origin;
import me.ele.lancet.base.annotations.Proxy;
import me.ele.lancet.base.annotations.TargetClass;@Proxy("i")
@TargetClass("android.util.Log")
public static int anyName(String tag, String msg) {msg = msg + "lancet";return (int) Origin.call();
}

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词