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



现在,我知道了。。。

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

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

一句话:你能使用类似GCJ的东西将Java源文件(或.class)编译成本机代码吗?如果可以,这会保护它免受反编译吗?

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

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

查看一些模糊器工具,如ProGuard

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


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

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

您可以使用模糊处理程序使代码更难反编译,并且仍然保留使用Java的好处。

类似于源代码模糊处理程序这个,这个和这个使您的变量、函数等无法被其他人读取(没有逻辑意义)。你也应该读这里!

最新更新