Java面试题大全
什么叫反编译?你把java程序(jar)交给别人,会被人看到源码吗?

编译 Compile

将一个 *.java文件编译成 *.class 文件的过程,称为编译。

比如,HelloWorld.java 被编译后得到 HelloWorld.class


反编译 Decompile

在.class文件里包含了完全的信息,包含类名、方法、属性、注解,除了注释文字之外的所有信息。所以从.class文件可以恢复得到原来的*.java文件,而且一丝不差!

从 *.class 逆向得到 *.java 的过程,称为反编译。


反编译之后,得到的*.java和原始代码文件几乎完全相同,除了注释文字。所以,当你把*.class或者 *.jar 交到别人手里时候,别人可以很容易的得到原始代码。


具体的反编译效果展示,可以参考《项目应用篇》之“反编译"一章。


* 如何防止别人反编译?

没有办法。就好比一个C程序可以反编译为汇编代码一样,*.class可以反编译得到Java代码。

但是,并不是完全没有办法,在业界普遍采用proguard混淆技术来对抗反编译,具体可以参考《项目应用篇》之“proguard混淆技术"一章。

千问首页   |   返回上一页