我想知道为什么Java类文件比任何只能被反汇编成汇编代码的Windows可执行文件轻松重建,而不是代码本身。
谢谢。
答案 0 :(得分:1)
Java类文件很容易进行逆向工程。
格式非常规则且非常有限:VM必须能够验证代码是否符合Java代码的强类型规则。这类似于C编译器的输出,其中所有优化都被停用:程序结构清晰可见。 (在Java模型中,当JIT编译器运行时,优化发生在VM本身。)
请注意,您可以使用模糊处理来帮助保护Java免受逆向工程的影响。
答案 1 :(得分:0)
主要是因为Java类文件包含方法和字段名称,因此反编译的src看起来非常像原始文件,除了注释。 BTW源可能无法100%恢复,例如原始src String s = "123" + 4;
将被编译/反编译为String s = "1234";