java - 将 Java 编译为 native 代码是否会保护源代码?

标签 java decompiling gcj

现在,我知道...

Anything can be reverse engineered, given enough time and resources.

但是,是否可以使用 GCJ 之类的工具将您的 Java 代码编译为 native 代码?使反编译更困难?我的意思是,给我几分钟时间,我可以使用 JD-GUI 反编译一个 .jar ,而且比较准确。大多数“Java 到 EXE”转换器只是 JVM 的 .exe 启动器,虽然 JVM 有很多好处,但我一直相信源代码的安全性不是其中之一。

底线:您能否使用 GCJ 之类的工具将您的 Java 源(或 .class)文件编译为 native 机器代码,如果可以,是否可以保护它免于反编译?

编辑:理想情况下,这不仅仅是混淆。具体的项目是一个商业游戏,所以我们正在寻找一种方法,使从一开始就更难获得源代码,而不仅仅是理解它。另外,我不确定 Steam 是否接受 .jars,我们正计划将其提交到新的 Green Light。项目。

最佳答案

我不会仅仅为了源代码安全而选择这种方法。

查看一些混淆器 工具,例如 ProGuard

如果你想看看这些工具对你的源代码做了什么,只要手头有一个反编译的 Minecraft jar 就可以尝试阅读。


使用它的一个缺点是,如果您的代码依赖于使用反射,您将必须配置工具以忽略那些函数/类/任何东西,因为在否则运行时。

关于java - 将 Java 编译为 native 代码是否会保护源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204235/

相关文章:

java - 并发观察者模式

java - 使用 gcj 编译的 java 和 XStream。 (异常 : Cannot create XmlPullParser)

java - 获取 jar 的所有导入类

java - GCC 中的外部 "Java" block

java - 如何修复生成的代码中的错误

当在类中声明类型参数时,Java 泛型类型会丢失常量类型

java - 使用 Sonar 扫描仪扫描项目时出错

c# - 对象类型末尾的 & 字符是什么?

java - 防止/减慢反编译的技术