如何判断文件是EXE还是DLL?
发布时间:2021-03-16 05:30:30 所属栏目: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); } (编辑:上海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows 10 怎样修改注册表
- windows-7 – 跳过新的Windows 7用户选择并转到登录提示
- windows – 如何最大限度地减少存储消耗?
- Windows 10再曝CPU高占用率BUG 可手动解决
- 微软NTLM协议曝出巨大漏洞,现有安全保护措施也无用!
- 干货,不小心执行了rm -f,除了跑路,如何恢复?
- windows-server-2008 – 在8 GB RAM机器上删除页面文件有什
- 开机进入纯净的Windows系统,一个设置就可以搞定
- windows-8 – 如何在Windows 8.1(IE11和Modern UI)上调试PA
- 优秀!Github上10个开源免费的后台控制面板你值得拥有!
站长推荐