如何从Win32可执行文件(最好是C#)中提取RT_RCDATA节?
时间:2020-03-06 14:34:48 来源:igfitidea点击:
我知道当前如何执行此操作的唯一方法是在Visual Studio中打开EXE。我希望能够在Cif中完全做到这一点。其他选项包括:
- 从Win32 API P /调用LoadResource()
- 使用现有工具(有人知道吗?)
- 还有其他想法吗?
谢谢!
解决方案
P /调用LoadResource将是我们最安全的选择。
否则,我们将不得不编写自己的P / E处理器,例如。 PE处理器示例。处理器不是世界末日,但是我们可以看到,与P / Invoke相比,它涉及的更多。
几乎忘了,就工具而言,大多数P / E浏览器都会为我们完成此操作。例如。 P / E Explorer,可用,但尚未真正开发。我还使用过IDA Pro这样的东西。快速的IDA插件可以轻松完成此操作。
我假设我们正在尝试从可执行文件中读取RCDATA类型的资源(请注意,"可执行节"的含义与PE文件的.text,.data,.rdata等不同)。如果要从当前程序集中阅读它,则此教程显示如何:使用GetManifestResourceStream,GetManifestResourceNames和GetManifestResourceStream方法访问嵌入式资源。
如果我们不想从当前的可执行文件中读取它,则可以使用与此处显示的方法类似的方法。
与PInvoke相比,这些方法的优势在于它们是100%.NET,并且我们不必费心处理往返于平台数据类型的参数,并确保我们验证了所有返回值。