赞
踩
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")。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。