如何判断文件是EXE还是DLL?
发布时间:2021-03-16 05:32:14 所属栏目:Windows 来源:网络整理
导读:如果你的文件扩展名已经搞砸了,你怎么能告诉一个DLL可执行文件? 他们似乎都有入口点和一切… 看看 this article在Windows上的便携式可执行文件的一个很好的解释. 然后再看一下关于PE头的部分.此外,代码在C中显示了使用Win32打开和检查PE文件的方法.您正在查
|
如果你的文件扩展名已经搞砸了,你怎么能告诉一个DLL可执行文件? 他们似乎都有入口点和一切… 看看 this article在Windows上的便携式可执行文件的一个很好的解释.然后再看一下关于PE头的部分.此外,代码在C中显示了使用Win32打开和检查PE文件的方法.您正在查找的信息存储在IMAGE_FILE_HEADER中.具体在特性字段中,如果它是一个dll,它将包含标志IMAGE_FILE_DLL 0x2000. 这应该为您提供足够的信息来创建一个小型实用程序,以便确定一堆文件,如果这是您正在寻找的. 用于参考目的的最相关的代码段,从上面的文章复制并编辑以消除无关的细节/错误处理. void DumpFile(LPWSTR filename)
{
HANDLE hFile = CreateFile(filename,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
HANDLE hFileMapping = CreateFileMapping(hFile,PAGE_READONLY,NULL);
LPVOID lpFileBase = MapViewOfFile(hFileMapping,FILE_MAP_READ,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);
}
(编辑:珠海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Win10不可以更改账户类型的解决方法
- Windows 2012 R2 – 使用MD5哈希搜索文件?
- Windows 11等版本集体中招 微软证实存有高危漏洞
- 简单几步教你win7如何安装
- windows-server-2008 – 在服务器2008 R2中,如果我以管理员
- Windows Core OS设备现身GeekBench:搭载Intel 5核Lakefiel
- 系统瘦身20%,顺畅稳定不更新,这款Windows 10精简版真香
- windows7控制面板打开部位详细说明
- windows-server-2008-r2 – Slipstream SP1到Windows Serve
- 即将到来的Debian 10 Buster发布版的新特点
站长推荐
热点阅读

