你可以反编译任何.jar,这是不是很奇怪\不安全吗?

时间:2016-05-05 16:15:35

标签: java decompiler

我的意思是 如何

如果我制作了一个我不想 分享 代码的程序,那么实际上并没有实现这一目标的方法,它可以很容易地 反编译 ! (谈论罐子),

这不是一个严重的 问题 吗?它与 其他语言 不一样(它不像java那么容易)。

编辑:我不会问如何预防,我问为什么?

1 个答案:

答案 0 :(得分:2)

使用工具或库对代码进行模糊处理。

有关此主题的更多信息,请参阅:https://www.owasp.org/index.php/Bytecode_obfuscation#How_to_prevent_Java_code_from_being_Reverse-engineered_.3F,其中描述了:

  

如何防止Java代码被逆向工程?   可以采取一些措施来防止逆向工程:

     

代码混淆

     

这主要通过变量重命名来完成;请参阅下一段以获得更多精确度,

     

抑制行尾字符。这使代码难以解析,   使用匿名类来处理事件。这似乎不是由许多反编译器处理的;然而,JAD很好地应对了这一点。

     

类文件加密

     

这意味着在运行时进行uncyphering的一些开销。有几种工具可供选择:: Cinnabar Systems的Canner或JSoft的JLock。它们可用于评估,第一个目前仅针对Windows平台提出。   用某些字符替换方法名称,例如'/'或'。'在类头中导致流行的反编译工具(如JAD)转储难以理解的源代码(您无法确定来自源的控制流)。

     

注意:谨防使用加密的100%Java解决方案来保护类文件,因为这些文件很可能是蛇油。由于JVM必须在某个时刻读取未加密的类文件,即使类文件在磁盘上加密,它们也必须在传递给JVM之前进行解密。攻击者可以修改本地JVM,以便在此时以未加密的形式将类文件写入磁盘。 (参见:Javaworld文章)。

     

猜想:使用Java分析器很容易绕过这些方法来显示字节码。

     

有哪些混淆工具可用?   Java代码混淆存在许多工具。您可以在以下网址下找到大量列表,或者只需在您喜欢的搜索引擎中输入“混淆器”:http://directory.google.com/Top/Computers/Programming/Languages/Java/Development_Tools/Obfuscators/   http://proguard.sourceforge.net/alternatives.html

     

KlassMaster,缩小并混淆代码和字符串常量。如果保存模糊日志,它还可以将堆栈跟踪转换回可读形式。

     

Proguard是一个缩小器(使代码更紧凑),以及优化器和混淆器。   Jode是一个反编译器,一个优化器和一个混淆器。它包含清理日志记录的设施,   Jarg,

     

Javaguard,这是一个简单的混淆器,没有很多文档,

     

CafeBabe,它允许精确查看字节码文件和单文件混淆;教授ByteCode结构的好工具,不仅仅是一种生产工具。

如果你想防止'代码篡改',那么我建议你签署你的jar文件。如果被篡改,这将使jar无法使用。有关详细信息,请参阅:https://docs.oracle.com/javase/tutorial/deployment/jar/signindex.html