4

每当一个类被反编译时是否有可能显示一些垃圾代码。但是在运行同一个类时它应该可以正常工作吗?我知道这可能看起来很奇怪,真的有可能吗?或限制 JAR 中某些类的反编译

4

3 回答 3

2

不,这是不可能的,但是您可以obfuscate编写代码,这样它的可读性就会降低。通常它是足够的解决方案。

于 2013-06-13T06:49:13.807 回答
2

您尝试反编译的类可能会被混淆。

来自维基:

混淆是故意创建混淆代码的行为,即人类难以理解的源代码或机器代码。

程序员可能故意混淆代码以隐藏其目的(通过晦涩的安全性)或其逻辑,以防止篡改,阻止逆向工程,或者作为阅读源代码的人的难题或娱乐挑战。

有关更多详细信息,请阅读:http://en.wikipedia.org/wiki/Obfuscation_(software)

有一些工具可以用来混淆你的代码,这里有几个:

http://www.yworks.com/en/products_yguard_about.htm

http://proguard.sourceforge.net/

于 2013-06-13T06:49:27.463 回答
1

一定程度上是可以的。不是真正的垃圾字符,而是相当难以破译的代码。您正在寻找的东西称为“Java 字节码混淆器”。有很多,商业和非商业的。但是,归根结底,如果 JVM 可以读取并正确运行您的代码,则可以对其进行反编译。

请注意,字节码混淆可能会妨碍 JVM 的各种优化。

于 2013-06-13T06:49:46.870 回答