我认为java可执行文件(jar文件)对于反编译和获取源代码是微不足道的.
其他语言怎么样?.net和所有?
哪些语言只能编译成可反编译的代码?
通常,Java,C#和VB.NET等语言相对容易反编译,因为它们被编译为中间语言,而不是纯机器语言.在它们的IL形式中,它们在编译为机器语言时保留了比C代码更多的元数据.
从技术上讲,你没有得到原始的源代码,但源代码的变体,在编译时,将为您提供已编译的代码.它与源代码不同,因为注释,注释和编译器指令之类的东西通常不会被转移到编译代码中.
托管语言可以很容易地反编译,因为可执行文件必须包含很多元数据以支持反射。
诸如C ++之类的语言可以编译为本地代码。在编译\翻译过程中,程序结构可以完全改变。
编译器可以轻松替换\合并\删除代码的某些部分。原始代码与已编译(本机)代码之间没有一对一的关系。