在试验自己之后,我确信java代码封存在防止反向代码工程方面是不安全的。 所以,我转而使用Launch4J将我的一个核心jar文件捆绑到一个EXE文件中。 jar文件也包含主要的入口方法。 这是否会再次保护代码逆向工程?
答案 0 :(得分:17)
如果计算机可以运行它,人类可以对其进行逆向工程。
答案 1 :(得分:8)
Launch4J不会将您的Java代码转换为本机可执行代码,它只是提供了一个查找JDK的本机启动程序,并将您的JAR作为资源(或者打包在可执行文件中)。这只是一种便利 - 而不是安全。如果您的JAR在可执行文件外部,则可以像常规Java应用程序一样对您的代码进行反向工程。如果您的JAR被打包到可执行文件中 - 可能有人编程逻辑将JAR包装在可执行文件中,并且有人可以编程逻辑以从可执行文件中解包JAR(或使用可从可执行文件中提取资源的许多工具之一) - 然后可以像常规Java应用程序一样对代码进行反向工程。
答案 2 :(得分:2)
简而言之,您无法阻止代码进行逆向工程。
即使您获得了受保护的代码,也可以对其进行监控。也许在字节码级别上,也许在ASM级别上,这无关紧要 - 重要的是,当一个人可以监控正在执行的代码时,它也可以进行逆向工程。有些方法比其他方法花费的时间更多,但不存在不可能的情况。
不再考虑security through obscurity的条款,而是开始分析您遇到的真实安全等问题并相应地修复它们。防止逆向工程 - 即使它不是徒劳的练习 - 也不会神奇地解决你的软件问题。
答案 3 :(得分:0)
我在exe
(从launch4j
生成)对罐子进行了逆向工程
如果您错过了jar
文件并且只有exe
,则以下是检查来源的步骤。
xyz.exe
,请将其重命名为xyz.exe.zip
zip
(例如:xyz.exe.zip).class
文件。jd-gui
中打开.class
文件,您需要检查哪个来源,您可以看到src
。答案 4 :(得分:-1)
如果您将可执行文件从.exe重命名为.zip,您将能够查看所有.class文件以及从.jar重命名为.zip等内容,并使用像http://java.decompiler.free.fr这样的反编译器能够查看您的源代码。
答案 5 :(得分:-3)
它应该。然而,这将缺少Java的全部内容。