现在,我知道......
如果有足够的时间和资源,任何东西都可以进行逆向工程。
但是,使用像GCJ这样的工具将Java代码编译为本机代码会使反编译变得更加困难吗?我的意思是,只需几分钟,我就可以使用JD-GUI反编译.jar,它相对准确。大多数“Java to EXE”转换器只是JVM的.exe发射器,虽然JVM有许多好处,但我还是认为源代码的安全性不是其中之一。
结论:您可以使用类似GCJ的东西将Java源(或.class)文件编译为本机机器代码,如果是这样,是否会保护它免受反编译?
编辑:理想情况下,它不仅仅是混淆。具体的项目是一个商业游戏,所以我们正在寻找的方法是让开始时更难以获得源代码,而不仅仅是了解它。此外,我不确定Steam是否接受.jars,我们正计划将其提交给新的Green Light项目。
答案 0 :(得分:5)
我不会仅仅为源安全性选择这种方法。
查看一些 Obfuscator 工具,例如ProGuard
如果您想查看这些工具对源代码的作用,请尝试阅读已反编译的Minecraft jar,如果您手头有。
使用它的一个缺点是,如果你的代码依赖于使用 reflection ,你将不得不配置工具来忽略那些函数/类/任何东西,因为那些不会在否则就是运行时间。
答案 1 :(得分:4)
技术上,是的。使用像GCJ这样的东西会使反编译变得更加困难,但请记住,如果你这样做,你将失去使用Java的一些主要好处。也就是说,你失去了编写跨平台应用程序的能力。
您可以使用混淆器来使代码更难以反编译,并且仍然保留使用Java的好处。
答案 2 :(得分:0)