0

我收到了一个带有我下载的应用程序的 java dll 文件。这个 DLL 文件是用 Java 编写的,现在我想反编译它。

下面是我如何调用这个包含 jar 的 dll:

new JarInputStream(getClass().getResourceAsStream("jarjava.dll"));

有没有办法反编译?

4

3 回答 3

1

Java 源文件被编译为 .class 文件。据我所知,没有将 java 代码编译为 DLL 的标准方法。

这里可能发生了什么:

  • 这是针对 JNI API 编写的 C 代码,用于与(或来自)Java 代码交互;
  • 这是由某些工具(自动)转换为 C 代码,然后编译为 DLL 的 Java 代码。
  • 这是一个有人重命名为 DLL 的 JAR 文件。在这种情况下,将其重命名,解压缩 JAR,然后使用 Java 反编译器反编译 JAR。

如果不了解此 DLL 的来源,您将无能为力。尝试使用 C 反编译器,但可能不会走得太远。

于 2012-04-16T09:08:11.747 回答
0

您可以阅读机器代码并自己将其翻译回 C 语言。这并不容易,因为将代码编译为本机的全部意义(可能是唯一一点)就是让反编译变得更加困难。

于 2012-04-16T09:07:56.833 回答
0

问题解决了。

这是我是如何做到的:

阅读文件:

JarInputStream input = new JarInputStream(getClass().getResourceAsStream("/myjar.dll"));

为每个条目编写一个新文件:

JarEntry entry;
while ((entry = input.getNextJarEntry()) != null)
{
    // Write file
}
于 2012-04-16T11:41:10.900 回答