我在.NET中尝试内存访问。目前,我有一个托管程序,它启动一个非托管进程,并检索其中一个加载模块(DLL)的BaseAddress
。我想做的是以某种方式读取加载模块的PE头,以便我以后可以检索其导出的地址。
不幸的是,我找不到任何关于此的好消息。有什么想法吗?
答案 0 :(得分:5)
This是PE文件格式的一个很好的起点。
您可以从基地址P / Invoke ReadProcessMemory将标题复制到您的流程中。您需要将读取的内存解析为各种PE头。第一个标题是IMAGE_DOS_HEADER,它会指向IMAGE_NT_HEADERS。然后,您可以使用IMAGE_NT_HEADERS中的IMAGE_OPTIONAL_HEADER来查找二进制文件中IMAGE_EXPORT_DIRECTORY的位置。