PE文件-DOS头

概述

PE文件是指某一种格式的文件,可执行文件(.exe),动态链接ku(.dll),驱动文件(.sys)等等....

PE文件整体的格式图:

 

DOS头

IMAGE_DOS_HEADER头格式 为了兼容DOS程序而设立 中间字段对现在来说没有作用

typedef struct _IMAGE_DOS_HEADER {      
    WORD   e_magic;            //PE的标志 解析是作为是否为PE文件的第一个标志 值为0X5A4D "MZ"     
    WORD   e_cblp;                      
    WORD   e_cp;                        
    WORD   e_crlc;                      
    WORD   e_cparhdr;                   
    WORD   e_minalloc;                  
    WORD   e_maxalloc;                  
    WORD   e_ss;                        
    WORD   e_sp;                        
    WORD   e_csum;                      
    WORD   e_ip;                        
    WORD   e_cs;                        
    WORD   e_lfarlc;                    
    WORD   e_ovno;                      
    WORD   e_res[4];                    
    WORD   e_oemid;                     
    WORD   e_oeminfo;                   
    WORD   e_res2[10];                  
    LONG   e_lfanew;         //指向新PE的偏移     
  } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;

DOS头二进制

 代码解析-DOS头

int main()
{
	// 先打开文件
	HANDLE file_handle = CreateFileA(
		PATH,
		GENERIC_READ,
		NULL,
		NULL,
		OPEN_EXISTING,
		FILE_ATTRIBUTE_NORMAL,
		NULL
	);
	// 获取文件大小 
	DWORD file_size = GetFileSize(file_handle, NULL);
	// 申请空间保存文件内容, 如果读取成功就申请空间
	char* file_buff = new char[file_size];
	// 读取文件
	DWORD read_size = 0;
	ReadFile(file_handle, file_buff, file_size, &read_size, NULL);
	// 关闭文件
	CloseHandle(file_handle);

	PIMAGE_DOS_HEADER dos_head = PIMAGE_DOS_HEADER(file_buff);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值