Java限制某些类的反编译

4

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

3个回答

2
不,这是不可能的。但是你可以使用代码混淆技术,使代码变得难以阅读。通常这已经足够了。

2
你尝试反编译的类可能已被混淆了。
从维基百科上可以了解到:
混淆是有意创建混淆代码的行为,即难以为人理解的源代码或机器代码。程序员可能会故意混淆代码以隐藏其目的(通过模糊安全性)或其逻辑,以防止篡改、阻止反向工程,或者作为一个谜题或娱乐挑战给读取源代码的人。
要了解更多详情,请参见:http://en.wikipedia.org/wiki/Obfuscation_(software) 有一些工具可用于混淆您的代码,以下是其中几个示例:

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

http://proguard.sourceforge.net/


1
如果你引用了某些内容,最好能够附上来源链接,这样别人就不会认为这是你自己的话了。在这种情况下,你是从维基百科引用的,所以请添加一个链接。 - maba
@maba 我引用它是为了给人留下它来自某个地方的印象。无论如何,我接受你的建议并已相应地编辑了帖子。谢谢! - Juned Ahsan

1

在一定程度上是可能的。不是真正的垃圾字符,而是相当难以解密的代码。你要找的是所谓的“Java字节码混淆器”。有许多这样的工具,包括商业和非商业的。然而,最终,如果JVM可以读取并正确运行您的代码,它就可以被反编译。

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


哦,他想了解代码混淆...没听懂。 - alvinarul
@AlvinArulselvan:是字节码,而不是源代码。 - T.J. Crowder
https://www.owasp.org/index.php/Bytecode_obfuscation 是一个很好的资源,可以阅读。 - alvinarul
谢谢提供详细信息。我想只混淆一个包及其所有依赖类和非Java资源文件。请问有人知道是否可以使用Proguard实现这一点?如果可以,我们该如何实现? - hanmayya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接