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

标签 java c# applet

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

enter image description here

所以我猜Java类在那里但无法访问,我在应用程序中所能找到的只是具有上述链接的RC_DATA内容,还发现该应用程序是使用Jexegen转换为EXE的Java应用程序

我的问题是是否有办法提取 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”)仅包含带有类名的字符串(可能是主类名),较大的一个(名为“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/

相关文章:

java - 尝试访问类时出现空指针异常

c# - 在 Entity Framework 中是否有更简单的方法将关系分配给新对象?

Java 在开发环境中抑制 java 未知发布者警告

java - 有没有办法访问 "Others Workingset"或其工作集管理器?

java - 检测服务器套接字关闭

c# - "400 Error: Bad request"Azure 存储连接

c# - wpf mvvm 是否可以有一个带有对象列表的 ListView ,在它下面有一个包含所选项目的 View

java - 在具有不断重新绘制的 JPanel 的 JApplet 中使用组件

java - 小程序中的 start() 方法删除面板

java - 如何检测类路径中的重复 JAR?