0
假设有下面的代码 -获取文件名由地址映射到内存中它映射到
HANDLE h = CreateFile(L"some_dll.dll", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
HANDLE map = CreateFileMapping(h, NULL, PAGE_READONLY | SEC_IMAGE, 0, 0, NULL);
LPVOID res = MapViewOfFileEx(map, 0, 0, 0, 0, 0);
是否可以提取“some_dll”,因为采用c它映射到地址,++?
当试图调试使用WinDbg的这个可执行文件,它似乎不提取模块也很好
太好了,谢谢! –
文件映射(即段对象)映射为“SEC_IMAGE”,内存管理器为其映射PE/COFF映像标题中指定的各个段。因此,WinDbg会显示来自映射图像“IMAGE_EXPORT_DIRECTORY”的“Name”,如果它实际上是作为模块加载的,IIRC将被加载器模块表中的任何名称覆盖。 VC++在生成一个DLL时设置这个导出目录'Name'字段。似乎用于构建此DLL的工具将其留为空白。 – eryksun