-1

如何从 Win32 可执行文件(最好在 C# 中)中提取 RT_RCDATA 部分?

我目前知道如何做到这一点的唯一方法是在 Visual Studio 中打开 EXE。如果可能的话,我希望能够完全在 C# 中做到这一点。

谢谢!

4

2 回答 2

2

P/Invoke LoadResource 将是您最安全的选择。

否则,您将不得不编写自己的P/E处理器,例如。PE 处理器示例。处理器不是世界末日,但正如您所看到的,它比 P/Invoke 涉及更多。

差点忘了,就工具而言,大多数 P/E 浏览器都会为您执行此操作。例如。P/E Explorer,可用但尚未真正开发。我也用 IDA Pro 来处理这样的事情。一个快速的 IDA 插件可以很容易地做到这一点。

于 2008-09-23T04:54:39.853 回答
0

我假设您正在尝试从可执行文件中读取 RCDATA 类型的资源(请注意,“可执行部分”的含义不同——它指的是 PE 文件的 .text、.data、.rdata 等部分)。如果您想从当前程序集中读取它,这里有一个教程展示了如何:使用 GetManifestResourceStream 访问嵌入式资源,使用GetManifestResourceNamesGetManifestResourceStream方法。

如果您不想从当前可执行文件中读取它,可以使用类似于此处显示的方法。

与 PInvoke 相比,这些方法的优势在于它们是 100% .NET,您不必费心将参数编组到平台数据类型或从平台数据类型中提取,并确保验证了所有返回值。

于 2008-09-23T04:56:57.167 回答