【问题标题】:Decompile Java Application packed with launch4j反编译用launch4j打包的Java应用程序
【发布时间】:2013-01-30 12:51:36
【问题描述】:

我有一个使用 launch4j 转换为 .exe 的 Java 应用程序。出于多种原因,我需要访问应用程序的类文件。

我尝试的第一件事是使用 7zip 解压 exe。这样我得到了一些类文件,但肯定不是整个应用程序都打包在 exe 中(类文件似乎属于 launch4j)。

还有哪些其他选择?

【问题讨论】:

  • 他们可能也使用它来混淆和保护代码。我能问一下为什么你需要修改和反编译这个可执行文件吗?能不能不要向应用程序的供应商索要源代码?
  • 因为我是不会提供帮助的供应商 ;-) 我前段时间创建了应用程序。我以为我再也不用碰这个应用程序了,所以现在我所有的项目文件都不见了。只剩下可执行文件。不,来源没有被混淆或任何东西......
  • 当您创建包装 JAR 的 launch4j exe 时,生成的 .exe 文件实际上仍然是有效的 JAR,因为 ZIP 文件格式允许将任意“垃圾”添加到 ZIP文件。 Launch4J 本身不做任何混淆,它只是在你告诉它包装的任何 JAR 的前面粘贴一个可执行文件头。

标签: java class decompiler launch4j


【解决方案1】:

您可以使用类似的方法从 Launch4j 可执行文件中提取 JAR:

http://www.nirsoft.net/utils/resources_extract.html

通常可执行文件将必要的 JAR 打包为可执行资源,然后在执行路径上查找 JDK。

获得 JAR 文件后,您应该能够对其进行反编译。

【讨论】:

    【解决方案2】:

    您无法访问类文件。创建了 Exes,因此没有人可以访问您的代码。 如果不知何故,您能够访问 jar 文件,那么您可以反编译它们以获取代码并进行更改。

    【讨论】:

    • 其实launch4j的目的是为用户提供更好的体验,而不是保护jar文件。就像 UPX 很容易拆包一样,因为它是一个打包程序,而不是一个保护程序。
    猜你喜欢
    • 2012-04-06
    • 2020-09-03
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 2018-10-07
    • 1970-01-01
    相关资源
    最近更新 更多