如何在最终编译之前使用java注释修改源代码?
我从apt工具页面上读到,可以为generate new derived files (source files, class files, deployment descriptors, etc.)创建注释处理器。我正在寻找这样做的例子
我需要在编译时对所有带注释的字符串进行编码,以便读取类文件时不允许读取静态字符串:
基本代码:
String message = (@Obfuscated "a string that should not be readable in class file");
应返工为:
String message = new ObfuscatedString(new long[] {0x86DD4DBB5166C13DL, 0x4C79B1CDC313AE09L, 0x1A353051DAF6463BL}).toString();
基于静态^{
您知道如何编写AnnotationProcessor的process()方法来编辑带注释的代码吗
提前感谢,
# 1 楼答案
你本来可以的
它可以正常编译,但是在编译之后,你有一个工具可以检查字节码,例如使用ObjectWeb的ASM,改变字符串文字,使其看起来像
为了更容易地识别需要更改的字符串,您可以为它们添加前缀,并且可以确保在代码被混淆后,该前缀确实出现
# 2 楼答案
我打赌spoon可能就是你要找的。但是为什么要混淆静态字符串呢
# 3 楼答案
Zelix KlassMaster提供了这种能力。如果内存可用,3个开发者以下的公司以前是免费的,但我刚刚查看了他们的购买页面,他们现在似乎向小公司收取小开发者费用。我已经好几年没有使用它了(至少5或7年),但它在混淆字符串和代码方面做得非常好
# 4 楼答案
当我要生成分发它的版本时,我有一个类,它用OfDiscated字符串调用覆盖所有常量:
这是一个过程:
蚂蚁:
Java Ofuscate代码(混淆):
希望有帮助:)