gpt4 book ai didi

dll - 如何判断文件是EXE还是DLL?

转载 作者:行者123 更新时间:2023-12-04 00:45:17 25 4
gpt4 key购买 nike

如果您弄乱了文件扩展名,您如何区分可执行文件和 DLL?

他们似乎都有切入点和一切......

最佳答案

this article有关 Windows 上可移植可执行文件的良好解释。

然后查看有关 PE header 的部分。此外,其中的代码在 C 中显示了使用 Win32 打开和检查 PE 文件的方式。您要查找的此信息存储在 IMAGE_FILE_HEADER 中.具体在Characteristics将包含标志 IMAGE_FILE_DLL 0x2000 的字段如果是dll。

这应该为您提供足够的信息来创建一个小实用程序,如果这是您正在寻找的文件,它可以确定一堆文件。

用于引用目的的最相关代码位,从上面的文章中复制并编辑以删除无关的细节/错误处理。

void DumpFile(LPWSTR filename)
{
HANDLE hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

HANDLE hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);

LPVOID lpFileBase = MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0);

PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)lpFileBase;

PIMAGE_NT_HEADERS pNTHeader = (PIMAGE_NT_HEADERS)((DWORD)pDosHeader + (DWORD)pDosHeader->e_lfanew);

if ((pNTHeader->FileHeader.Characteristics & IMAGE_FILE_DLL))
printf("dll");
if ((pNTHeader->FileHeader.Characteristics & IMAGE_FILE_EXECUTABLE_IMAGE))
printf("exe");
else
printf("????");

UnmapViewOfFile(lpFileBase);
CloseHandle(hFileMapping);
CloseHandle(hFile);
}

关于dll - 如何判断文件是EXE还是DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6309179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com