Java 运行 PE32 如何传递到其 class 路径?

How can Java run a PE32 when passed to its class path?

我一直想对这个客户端启动器进行逆向工程,以了解游戏是如何作为 Java 应用程序启动的,尽管它旁边只有一个 PE32 可执行文件。

客户端的启动过程如下:

java -Xmx384M -Dfile.encoding="UTF-8" -cp TargetBinary.exe com.java.client.Client

现在我很好奇 TargetBinary.exe 到底是什么,因为这是 *NIX 系统上的 运行。 运行 file 我观察到这个输出。

TargetBinary.exe: PE32 executable (GUI) Intel 80386 (stripped to external PDB), for MS Windows

第二部分是 TargetBinary.exe 之后的 com.java.client.Client,这是一个 Java 路径,客户是我的目标。

这是我的问题:

  1. 如何 Java 添加 TargetBinary.exe 到它的类路径?
  2. 作为后续,是否有任何建议可以将其反编译到我可以观察 Client 的程度,以便了解它是如何打包在一起的?

作为一个可移植的可执行文件 (PE),库、代码等都应该在 TargetBinary.exe 中并且不知何故 Java 知道如何处理它?

Zip 文件是从后面读取的,因此很容易将 zip (jar) 文件放在可执行文件的末尾,并使其同时工作。

https://en.wikipedia.org/wiki/ZIP_(file_format)#Structure

尝试 运行ning jar -tvf TargetBinary.exe 查看 jar 中 类 和资源的名称。如果您使文件成为 IDE 中项目的依赖项,您可以看到反编译代码并在项目中导航,运行 它并设置断点。