判断一个文件的文件属性是不是PE文件:主要思路就是:比较文件的DOS头和NT头的白哦之是不是“MZ”和“PE”,判断文件是不是EXE文件或者DLL文件或者其他的主要思路是:获取文件的文件头的Characteristis字段,根据字段值进行判断
下边贴上源码

#include <stdio.h>
#include <Windows.h>
int main()
{printf("请输入您要检测的文件");char path[MAX_PATH];gets(path);LPCSTR   lpFileName=path;//要判断的文件的完整路径HANDLE   hFile;//要打开的文件的句柄DWORD    nNumberOfBytesToRead;//要检测的文件的大小LPDWORD  lpFileSizeHigh;hFile=CreateFileA(lpFileName,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);//打开要判断的文件if(hFile==INVALID_HANDLE_VALUE){MessageBoxA(0,"文件打开失败",0,MB_OK);}nNumberOfBytesToRead=GetFileSize(hFile,0);CHAR *lpBuffer=new CHAR[nNumberOfBytesToRead];//指向读取文件的缓冲区ReadFile(hFile,lpBuffer,nNumberOfBytesToRead,NULL,NULL);//读取文件内容到内存中,这个时候lpBuffer指向文件开始的地方PIMAGE_DOS_HEADER pDosHeader=(PIMAGE_DOS_HEADER)lpBuffer;//定义DOS头结构体PIMAGE_NT_HEADERS  pNtHeader=(PIMAGE_NT_HEADERS)(pDosHeader->e_lfanew+lpBuffer);//移动指针到NT头PIMAGE_FILE_HEADER  FileHeader=&(pNtHeader->FileHeader);//定义文件头,移动指针if(pDosHeader->e_magic!=IMAGE_DOS_SIGNATURE)//判断MZ标志位{MessageBoxA(0,"This File Is Not EXE File",0,MB_OK);}elseif(pNtHeader->Signature!=IMAGE_NT_SIGNATURE)//判断PE标志位{MessageBoxA(0,"This File Is Not EXE File",0,MB_OK);}else{MessageBoxA(0,"This File Is A PE",0,MB_OK);switch(FileHeader->Characteristics){case 0x2000:MessageBoxA(0,"This File Is A DLL",0,MB_OK);break;case 0x0002:MessageBoxA(0,"This File Is A EXE",0,MB_OK);case 0x1000:MessageBoxA(0,"This File Is A SystemFile",0,MB_OK);}}}

注意:(上边代码的switch case 结构的代码,其实严格来说不算正确,但是是在PE文件的基础上再次进行文件属性判断的一个思路)
上边采用的方法,相对来说比较浪费内存空间,因为在读取的过程中,采用的方法是直接将文件全部读取到程序内存中,实际上在比较的过程中完全可以一部分一部分的读取进行判断,这样的话,也就相对比较节省时间和节约内存 原理大致相同  
附上链接:
https://blog.csdn.net/dyxcome/article/details/91358070

判断文件是否是PE文件相关推荐

  1. 使用Python判断文件是否为PE文件

    PE的全称是Portable Executable,指可移植的可执行文件,目前的最新版本是2013年2月6日发布的8.3版.PE文件包括exe文件.com文件.dll文件.ocx文件.sys文件.sc ...

  2. 如何判断一个文件是否为PE文件

    PE文件,Portable Executable file format简称. 那么如何判断一个文件是否为PE格式的文件? 1.首先检验文件头部第一个字的值是否等于 IMAGE_DOS_SIGNATU ...

  3. 快速查询PE文件知识点和PE文件解析(下)

    延迟加载导入表 延迟加载导入表(Delay Load Import Table)是PE中引入的专门用来描述与动态链接库延迟加载相关的数据,因为这些数据所起的作用和结构与导入表数据基本一致,所以称为延迟 ...

  4. [系统安全] 四十一.APT系列(6)Python解析PE文件并获取时间戳判断来源区域

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  5. c语言怎么判断文件类型,判断你的文件是否为合法的PE文件和应用类型

    作者:赖锋 源代码下载 可能很多的人都没有注意到一些事情,就是你的程序是不是合法的可运行的应用程序,例如一个文件只是把后缀改成 .exe 的形式就显示为应用程序的图标了! 你不想写一个根据后缀名就确定 ...

  6. PE文件详解(教程1-7)

    PE文件详解(教程1-7) ========================================= PE教程1: PE文件格式一览 PE 的意思就是 Portable Executable ...

  7. 基于windows PE文件的恶意代码分析;使用SystemInternal工具与内核调试器研究windows用户空间与内核空间...

    基于windows PE文件的恶意代码分析:使用SystemInternal工具与内核调试器研究windows用户空间与内核空间 ******************** 既然本篇的主角是PE文件,那 ...

  8. 网络安全学习第6篇 - 爆破及PE文件解释

    1.请采用暴力破解的方式去尝试破解crack.exe文件(在实验报告中说明破解原理即可,无需提交破解后的文件) 2.请依据参考文档中的内容编写一个小程序,使其可以实现如下功能: ①判断一个文件是否为P ...

  9. 检测PE文件的有效性

    2008年01月14日 星期一 13:41 本文刊登于2007年第8期的<黑客防线>,有内容部分改动. 正文如下: 从杀毒软件的角度来讲检测文件是否为PE文件,并再进一步判断使用何种方式对 ...

最新文章

  1. 用了CFileDialog后File 写文件不能写进去
  2. C# WinForm获取程序所在路径方法
  3. Pytorch Document学习笔记
  4. CVPR2019 | 目标检测新文:Generalized Intersection over Union
  5. 文通表格识别系统是表格数据录入的好帮手
  6. 细说JavaScript对象(1):对象的使用和属性
  7. js vue中得延时器_Vue.js实现时分秒倒计时
  8. 关于如何在项目接口保证幂等性的一点思考
  9. modprobe命令使用方法
  10. Linux下Shell 备份脚本集合
  11. ORA-04043: 对象 dba_data_files 不存在 BUG
  12. CCSpriteBatchNode(附:CCMenu与CCSpriteBatchNode的问题)
  13. 用c语言编写小游戏:贪吃蛇
  14. 网页上的在线打印如何下载成本地PDF格式(人工亲测)
  15. 关于OSPF区域划分
  16. eulerOS 欧拉OS 审计修复日记
  17. Linux系统中systemctl命令的使用
  18. 有打印机的源代码餐饮_云打印机在餐饮行业的应用
  19. 火墙-firewalld
  20. 熬夜总结了 “HTML5画布” 的知识点(万字长文,建议收藏)

热门文章

  1. DKN: Deep Knowledge-Aware Network for News Recommendation阅读笔记
  2. 友元 异常 RTTI 类型转换符
  3. 视频会议新格局确立 云计算开启技术叠加时代
  4. DNA: 人类的终极U盘
  5. SpringCloud Day12---SpringCloud Alibaba Sentinel 服务熔断与限流
  6. 漫画:猜数字说公牛母牛的高频面试题
  7. 牛顿法与牛顿下山法(切线法)
  8. Excel表格列多选
  9. matlab nntool 使用步骤: (以p4.3 为例),Matlab_nntool_应用实例
  10. IDEA如何简单的设置中文