为什么反编译Java代码很容易?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

所以我刚刚意识到反编译我的Java代码是多么容易。我一直在寻找网络,我似乎无法弄清楚为什么它很容易。每次我谷歌的东西,如“为什么我可以分解.class文件?” 或者“为什么Java很容易反编译”,我得到的只是可以轻松解密我的代码的软件链接。所以我转向你StackOverflow:为什么Java可以转换回容易读取的源代码,而C ++和其他语言不太适合反编译?

提问于
用户回答回答于

由于Java字节码与程序集相比距离源更近(更类似)。

特别是,.class文件包括类名称,方法名称,字段和参数类型等的元数据...... 所有Java(或.Net)反编译器都需要查看每个方法体中的指令,并将它们转换为适当的语法结构体。

相比之下,像C ++这样的本地语言根本不包含任何元数据,所以反编译器需要重构所有的东西

用户回答回答于

Java被编译为一种中间形式的JVM字节码,它保留了原始Java代码中包含的大量信息。像C ++这样的语言编译成汇编代码,看起来与原始代码有很大不同,因此很难反转。

扫码关注云+社区