aspectj接入后发现一些问题

android aop切面使用aspectj在混淆方面发现比较麻烦的事情

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
在每一个被hook的文件生成类似下列的代码
private static final b ajc$tjp_0 = null;
static {
ajc$preClinit();

}

private static void ajc$preClinit() {
e eVar = new e("DialogUtils.java", DialogUtils.class);
ajc$tjp_0 = eVar.a(c.a, eVar.a("9", "showYesterdayEarningPopup", "com.kalengo.loan.utils.DialogUtils", "android.app.Activity:boolean:com.kalengo.loan.bean.UserAssetsInfoBean", "activity:isNewUser:userAssetsInfoBean", "", "void"), 83);
ajc$tjp_1 = eVar.a(c.a, eVar.a("9", "showSimpleTipsPopup", "com.kalengo.loan.utils.DialogUtils", "android.app.Activity:int:com.kalengo.loan.callback.DoCallback", "activity:type:callBack", "", "void"), Opcodes.I2C);

}

在被hook的方法插入:
KAspect.aspectOf().onDialogUtilsMethod(e.a(ajc$tjp_3, null, null, context));

####由此可见,被hook的方法和被hook的类是不能被混淆的,虽然aspectj是编译期间做的植入,但是为了不嵌入代码,使用了反射的方式,这导致混淆会有一定影响。

后面不打开混淆来检查是否是这样的方式,从代码的跳转看有没有可能直接指定植入代码,否则调研其他aop框架