是否将java代码编译为exe(例如使用Launch4Java)确保代码不能被反向设计?

时间:2010-02-11 12:22:38

标签: java reverse-engineering launch4j

在试验自己之后,我确信java代码封存在防止反向代码工程方面是不安全的。 所以,我转而使用Launch4J将我的一个核心jar文件捆绑到一个EXE文件中。 jar文件也包含主要的入口方法。 这是否会再次保护代码逆向工程?

6 个答案:

答案 0 :(得分:17)

如果计算机可以运行它,人类可以对其进行逆向工程。

答案 1 :(得分:8)

Launch4J不会将您的Java代码转换为本机可执行代码,它只是提供了一个查找JDK的本机启动程序,并将您的JAR作为资源(或者打包在可执行文件中)。这只是一种便利 - 而不是安全。如果您的JAR在可执行文件外部,则可以像常规Java应用程序一样对您的代码进行反向工程。如果您的JAR被打包到可执行文件中 - 可能有人编程逻辑将JAR包装在可执行文件中,并且有人可以编程逻辑以从可执行文件中解包JAR(或使用可从可执行文件中提取资源的许多工具之一) - 然后可以像常规Java应用程序一样对代码进行反向工程。

答案 2 :(得分:2)

简而言之,您无法阻止代码进行逆向工程。

  • 你已经注意到了混淆的好处(没什么,真的
  • 类切片/组合(有目的地混合''匹配各种类以打破代码的逻辑结构)也不会有帮助,特别是当你必须调试怪物时
  • 您也无法对字节码进行真正的加密/混淆,因为在字节码命中您的自定义ClassLoader之后,它已经以完全可读的格式返回。 More information here

即使您获得了受保护的代码,也可以对其进行监控。也许在字节码级别上,也许在ASM级别上,这无关紧要 - 重要的是,当一个人可以监控正在执行的代码时,它也可以进行逆向工程。有些方法比其他方法花费的时间更多,但不存在不可能的情况。

不再考虑security through obscurity的条款,而是开始分析您遇到的真实安全等问题并相应地修复它们。防止逆向工程 - 即使它不是徒劳的练习 - 也不会神奇地解决你的软件问题。

答案 3 :(得分:0)

我在exe(从launch4j生成)对罐子进行了逆向工程 如果您错过了jar文件并且只有exe,则以下是检查来源的步骤。

  1. 假设您的exe名称为xyz.exe,请将其重命名为xyz.exe.zip
  2. 转到RAD / eclipse为ex:temp。
  3. 创建一个jave项目
  4. 转到文件选择导入,导入窗口将打开。
  5. 转到常规并选择存档文件,然后单击下一步。
  6. 在存档文件窗口中,单击浏览并选择zip(例如:xyz.exe.zip)
  7. 在Into文件夹中选择目标路径在这里我选择了创建的jave项目临时点击完成。
  8. 您可以在上面的项目中看到所有.class文件。
  9. jd-gui中打开.class文件,您需要检查哪个来源,您可以看到src

答案 4 :(得分:-1)

如果您将可执行文件从.exe重命名为.zip,您将能够查看所有.class文件以及从.jar重命名为.zip等内容,并使用像http://java.decompiler.free.fr这样的反编译器能够查看您的源代码。

答案 5 :(得分:-3)

它应该。然而,这将缺少Java的全部内容。