从 AWT 可执行文件中提取 Java 类

extracting Java classes from AWT executable

我有一个应用程序,里面是 运行 JVM,看起来它正在使用 Abstract Windowing ToolKit (AWT),我发现在做了一些研究后,主要应用程序 window 是一个MSAWT_Comp_Class,对应用程序 EXE 进行了一些分析,我发现看起来像是导入 Java 类 的链接(我不确定):

所以我猜 Java 类 在那里但无法访问,我在应用程序中只能找到具有上述链接的 RC_DATA 内容,还发现该应用程序是一个使用 Jexegen 作为 Jexegen 转换为 EXE 的 Java 应用程序,并且可以使用十六进制查看器找到一些 SDK 链接。

我的问题是是否有办法提取 Java 类 或从该应用程序中读取它们?也许通过了解 Abstract Windowing ToolKit (AWT) 或 SwingJexegen 的结构或如何将 Java 文件包含在 c# 中编译后的应用程序。

希望我能把问题问清楚,我已经尽力了。

My question is if is there a way to extract the Java classes or read them from that application?

如您所知,.exe 文件包含 RC_DATA 类型的资源。 这种类型的条目有两个。较小的一个(名为“1001”)仅包含带有 class 名称的字符串(它可能是主 class 名称)而较大的一个(名为“1000”,大约 600 Kb)包含实际的 class是的。 您可以在任何资源提取工具的帮助下提取该资源,例如 "Resource Hacker".

每个 *.class 文件以 4 个字节 0xCA 0xFE 0xBA 0xBE 开头,因此您可以遍历提取的“1000”的内容并将每个 class 保存到单独的 *.class 文件中。每个 0xCA 0xFE 0xBA 0xBE 将标记新文件开始。而且,很明显之前结束了。

那么classes就可以反编译了。

maybe by knowing the structure of Abstract Windowing ToolKit (AWT) or Swing

AWT 和 Swing 只是构建的标准库 UI。所以这里无所谓。