ASM初步使用(二)

Android ASM插桩的初步使用(二)

上文说到,所有的都加上了插桩,这次主要是对部分方法加个自定义的注解。
先下载git上面的项目

注解

我也没学过注解,那么直接就建一个空的注解

public @interface TestASM {
}

然后再声明个方法,加上注解。

public class MyClass {
    public static void main(String[] args) throws InterruptedException {
        Thread.sleep(1000);

    }
    @TestASM
   void  ok(){

    }

}

重写visitAnnotation(String descriptor, boolean visible)

再声明一个boolean值,然后在这里面判断下是不是自己定义的注解

     @Override
            public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) {
                System.out.println(descriptor);
                if (descriptor.equals("Lcom/example/lib2/TestASM;")) {
                    ok = true;
                }else {
                    ok=false;
                }
                return super.visitAnnotation(descriptor, visible);
            }

我也不知道Lcom/example/lib2/TestASM;这个也是方法签名表得来的,我不太会 就先输出 再判断。机智!
这样,再

 @Override
            protected void onMethodExit(int opcode) {
                if(!ok){
                    return;
                }
                ......
             }
    @Override
            protected void onMethodEnter() {
                if(!ok){
                    return;
                }
                super.onMethodEnter();
       		    ......
            }

就是这样,感觉挺简单的 ??可能吧。
验证下结果:
在这里插入图片描述
OK,还是熟悉的味道。
ASM初步使用(一)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值