C# 如何从Win32可执行文件(最好是C)中提取RT#RCU数据段?

C# 如何从Win32可执行文件(最好是C)中提取RT#RCU数据段?,c#,winapi,resources,pinvoke,C#,Winapi,Resources,Pinvoke,目前我知道的唯一方法是在VisualStudio中打开EXE。如果可能的话,我希望能够完全用C#完成这项工作。其他选择包括: P/从Win32 API调用LoadResource() 使用现有工具(有人知道吗?) 其他想法 谢谢 p/Invoke LoadResource将是您最安全的赌注 否则,您将不得不编写自己的处理器,例如。处理器并不是世界末日,但正如您所看到的,它比P/Invoke复杂得多 几乎忘记了,就工具而言,大多数p/E浏览器都会为您完成这项工作。例如,P/E浏览器,可用但尚未

目前我知道的唯一方法是在VisualStudio中打开EXE。如果可能的话,我希望能够完全用C#完成这项工作。其他选择包括:

  • P/从Win32 API调用LoadResource()
  • 使用现有工具(有人知道吗?)
  • 其他想法

谢谢

p/Invoke LoadResource将是您最安全的赌注

否则,您将不得不编写自己的处理器,例如。处理器并不是世界末日,但正如您所看到的,它比P/Invoke复杂得多


几乎忘记了,就工具而言,大多数p/E浏览器都会为您完成这项工作。例如,P/E浏览器,可用但尚未真正开发。我也用过IDA Pro做类似的东西。一个快速的IDA插件很容易做到这一点。

我假设您正在尝试从可执行文件中读取RCDATA类型的资源(请注意,“可执行部分”的含义不同,它指的是PE文件的.text、.data、.rdata等部分)。如果要从当前部件中读取,下面是一个教程,演示如何使用和方法:

如果不想从当前可执行文件中读取,可以使用类似于所示的方法


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

对于许多资源任务,目前有一个非常有用的

许多类和函数确实围绕着
UpdateResource(…)
等来包装这些窗口api调用