5

现在,我知道...

只要有足够的时间和资源,任何事情都可以进行逆向工程。

但是,使用GCJ之类的工具将 Java 代码编译为本机代码会使反编译变得更加困难吗?我的意思是,只要几分钟,我就可以使用JD-GUI反编译一个 .jar ,而且相对准确。大多数“Java 到 EXE”转换器只是 JVM 的 .exe 启动器,虽然 JVM 有很多好处,但我一直认为源代码的安全性不是其中之一。

底线:您可以使用 GCJ 之类的东西将您的 Java 源(或 .class)文件编译为本机机器代码吗?如果可以,是否可以防止它被反编译?

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

4

3 回答 3

5

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

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

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


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

于 2012-08-30T19:42:39.317 回答
4

从技术上讲,是的。使用 GCJ 之类的东西会使反编译变得更加困难,但是请记住,如果这样做,您将失去使用 Java 的一些主要好处。也就是说,您失去了编写跨平台应用程序的能力。

您可以使用混淆器使代码更难反编译,并且仍然保留使用 Java 的好处。

于 2012-08-30T19:42:30.943 回答
0

这样的源代码混淆器,thisthis 使您的变量、函数等......其他人无法读取(没有逻辑意义)。你也应该在这里阅读!

于 2012-08-30T19:43:43.877 回答