我有一个在其中运行 JVM 的应用程序,看起来它正在使用 Abstract Windowing ToolKit (AWT) ,我发现在做了一些研究后,因为主应用程序窗口是一个 MSAWT_Comp_Class,对应用程序 EXE 进行了一些分析,我发现了一些看起来像导入 Java 类的链接(我不确定):
所以我猜Java类在那里但无法访问,我在应用程序中所能找到的只是具有上述链接的RC_DATA内容,还发现该应用程序是使用Jexegen转换为EXE的Java应用程序可以使用十六进制查看器找到 Jexegen 和一些 SDK 链接。
我的问题是是否有办法提取 Java 类或从该应用程序中读取它们?也许可以通过了解 Abstract Windowing ToolKit (AWT) 或 Swing 或 Jexegen 的结构,或者了解 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”)仅包含带有类名的字符串(可能是主类名),较大的一个(名为“1000”,大约 600 Kb)包含实际的类。
您可以借助任何资源提取工具(例如“Resource Hacker”)来提取该资源。
每个 *.class
文件以 4 个字节 0xCA 0xFE 0xBA 0xBE
开头,因此您可以迭代提取的“1000”的内容并将每个类保存到单独的 *.class
文件。每个0xCA 0xFE 0xBA 0xBE
将标记新文件的开始。而且,显然上一个已经结束了。
然后就可以反编译类了。
maybe by knowing the structure of Abstract Windowing ToolKit (AWT) or Swing
AWT 和 Swing 只是构建 UI 的标准库。所以这里并不重要。
关于java - 从 AWT 可执行文件中提取 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47115863/