我实在不明白为什么会出现这种情况。我能正确解析大部分PE格式,除了这个。我试着打印出一个特定PE正在使用的所有DLL。
首先,我从数据目录中获取导入表:
IMAGE_DATA_DIRECTORY importDir = (IMAGE_DATA_DIRECTORY)peHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT];
然后,我只需将其地址添加到我映射的地址上,即 MapViewOfFile 返回的地址:
PIMAGE_IMPORT_DESCRIPTOR importDescriptor =
(PIMAGE_IMPORT_DESCRIPTOR)((ULONG *)pe + importDir.VirtualAddress);
printf("%s\n", (ULONGLONG *)pe + importDescriptor[0].Name);
因为某些原因这个程序崩溃了,我该怎么做?
importDescriptor = (PIMAGE_IMPORT_DESCRIPTOR)((PBYTE)pe + importDir.VirtualAddress);
因为这个仍然会崩溃。 - Trey