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

将Java编译为本机代码是否保护源代码?,java,decompiling,gcj,Java,Decompiling,Gcj,现在,我知道 只要有足够的时间和资源,任何东西都可以逆向工程 但是,使用类似的工具将Java代码编译为本机代码会使反编译更加困难吗?我的意思是,在几分钟内,我可以使用反编译一个.jar,而且它相对准确。大多数“Java-to-EXE”转换器只是JVM的.EXE启动器,虽然JVM有很多好处,但我一直认为源代码的安全性不是其中之一 一句话:您可以使用GCJ之类的工具将Java源代码(或.class)文件编译为本机代码吗?如果可以,这会保护它不被反编译吗 编辑:理想情况下,这不仅仅是混淆。具体的项目是

现在,我知道

只要有足够的时间和资源,任何东西都可以逆向工程

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

一句话:您可以使用GCJ之类的工具将Java源代码(或.class)文件编译为本机代码吗?如果可以,这会保护它不被反编译吗


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

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


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

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

查看一些模糊工具,如

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



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

类似于源代码混淆器的工具 ,及
使您的变量、函数等。。。其他人无法阅读(没有逻辑意义)。你也应该读书

使用源代码模糊器,是的@tehtros看来编程语言没有任何区别(参见)。例如,一个Java游戏。您需要做的是使用JNI,如果您需要StasWorksAPI,因为它只是作为C++库暴露的。PrimeRD本身不是一个混淆器,它是优化器。优化只是碰巧愚弄了较弱的反编译程序。事实上,我认为这并不准确。ProGuard有单独的优化和模糊处理过程。真是个骗局。它没有列出任何您无法更轻松地免费获得的功能。