将Java编译为本机代码是否可以保护源代码?

时间:2012-08-30 19:38:54

标签: java decompiling gcj

现在,我知道......

  

如果有足够的时间和资源,任何东西都可以进行逆向工程。

但是,使用像GCJ这样的工具将Java代码编译为本机代码会使反编译变得更加困难吗?我的意思是,只需几分钟,我就可以使用JD-GUI反编译.jar,它相对准确。大多数“Java to EXE”转换器只是JVM的.exe发射器,虽然JVM有许多好处,但我还是认为源代码的安全性不是其中之一。

结论:您可以使用类似GCJ的东西将Java源(或.class)文件编译为本机机器代码,如果是这样,是否会保护它免受反编译?

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

3 个答案:

答案 0 :(得分:5)

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

查看一些 Obfuscator 工具,例如ProGuard

如果您想查看这些工具对源代码的作用,请尝试阅读已反编译的Minecraft jar,如果您手头有。


使用它的一个缺点是,如果你的代码依赖于使用 reflection ,你将不得不配置工具来忽略那些函数/类/任何东西,因为那些不会在否则就是运行时间。

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

像源代码混淆器一样 thisthisthis 使你的变量,函数等......被其他人看不懂(没有逻辑意义)。你也应该阅读here