【发布时间】:2014-09-25 07:37:36
【问题描述】:
我正在借助 AspectJ 构建一个项目来拦截 Android 中的方法。 当我构建我创建的代码的 jar 文件时,它会创建我在方法上应用的每个切入点的编译语法,如下所示:
混淆前的代码:
@After(value="(execution(* android.app.Activity.onCreate(..)) && (target(obj) && within(com.snapdeal.ui.activity.MainActivity)))", argNames="obj")
public void ajc$after$demo_Common_Aspects$1$dcc8d2c5(Object obj)
{
.
.
.
}
当我使用 dex2jar 工具混淆这个方法时,它只会从
更改方法的名称ajc$after$demo_Common_Aspects$19$a6eef354
到我用来混淆pkt1的字符串,但注释,即方法定义上方的行没有改变,它显示了方法拦截的详细信息。
混淆后的代码:
@After(value="(execution(* android.app.Activity.onCreate(..)) && (target(obj) && within(com.snapdeal.ui.activity.MainActivity)))", argNames="obj")
public void pkt1(Object obj)
{
.
.
.
}
到目前为止,我所知道的是我们可以混淆类、方法和变量的名称。 但我想混淆这一行:
@After(value="(execution(* android.app.Activity.onCreate(..)) && (target(obj) && within(com.snapdeal.ui.activity.MainActivity)))", argNames="obj")
所以我的测验是:
我们可以混淆注释吗?如果是怎么办?
我们如何混淆某些方法的局部变量?
【问题讨论】:
标签: java android obfuscation aspectj