Java Isn';您可以反编译任何.jar,这难道不奇怪\不安全吗?

Java Isn';您可以反编译任何.jar,这难道不奇怪\不安全吗?,java,decompiler,Java,Decompiler,我是说这怎么样 如果我制作了一个程序,我不想共享它的代码,实际上没有办法做到这一点,它可以非常容易地反编译!(谈论罐子) 这不是一个严重的问题吗?这与其他语言不一样(不像java那么容易) 编辑:我不是问如何防止,我是问为什么?用工具或库混淆代码 有关此主题的更多信息,请参阅:其中描述: 如何防止Java代码被反向工程? 可以采取几种措施来防止逆向工程: 代码混淆 这主要是通过变量重命名来实现的;请参见下一段,了解更多精确度 抑制行尾字符。这使得代码很难解析, 使用匿名类处理事件。这似乎不是由许

我是说这怎么样

如果我制作了一个程序,我不想共享它的代码,实际上没有办法做到这一点,它可以非常容易地反编译!(谈论罐子)

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


编辑:我不是问如何防止,我是问为什么?

用工具或库混淆代码

有关此主题的更多信息,请参阅:其中描述:

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

代码混淆

这主要是通过变量重命名来实现的;请参见下一段,了解更多精确度

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

类文件加密

这意味着在运行时取消加密会产生一些开销。有几种工具可用:Cinnabar Systems的Canner或JSoft的JLock。它们可用于评估,第一个建议目前仅适用于Windows平台。 将方法名称替换为类标题中的某些字符,例如“/”或“.”,会导致流行的反编译工具(如JAD)转储无法理解的源代码(您无法从源代码确定控制流)

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

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

有哪些混淆工具可用? 存在许多用于Java代码模糊处理的工具。您可以在以下URL下找到广泛的列表,或者只需在您喜爱的搜索引擎中键入“obfuscator”:

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

Proguard是一个收缩器(使代码更紧凑)、优化器和模糊器。 Jode是一个反编译器、优化器和模糊器。它包含清理日志记录语句的工具,, 贾格

Javaguard是一个简单的模糊器,没有很多文档

CafeBabe,允许精确查看字节码文件和单个文件混淆;一个很好的字节码结构教学工具,比一个生产工具


如果您想防止“代码篡改”,那么我建议您对jar文件进行签名。这将使罐子无法使用,如果篡改。有关更多信息,请参阅:

使用工具或库混淆代码

有关此主题的更多信息,请参阅:其中描述:

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

代码混淆

这主要是通过变量重命名来实现的;请参见下一段,了解更多精确度

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

类文件加密

这意味着在运行时取消加密会产生一些开销。有几种工具可用:Cinnabar Systems的Canner或JSoft的JLock。它们可用于评估,第一个建议目前仅适用于Windows平台。 将方法名称替换为类标题中的某些字符,例如“/”或“.”,会导致流行的反编译工具(如JAD)转储无法理解的源代码(您无法从源代码确定控制流)

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

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

有哪些混淆工具可用? 存在许多用于Java代码模糊处理的工具。您可以在以下URL下找到广泛的列表,或者只需在您喜爱的搜索引擎中键入“obfuscator”:

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

Proguard是一个收缩器(使代码更紧凑)、优化器和模糊器。 Jode是一个反编译器、优化器和模糊器。它包含清理日志记录语句的工具,, 贾格

Javaguard是一个简单的模糊器,没有很多文档

CafeBabe,允许精确查看字节码文件和单个文件混淆;一个很好的字节码结构教学工具,比一个生产工具

如果你想防止“代码篡改”