PE头打印

勿在浮沙筑高台

一、流程

1、打开文件,并判断是否打开成功
2、读取文件大小
3、申请内存,并判断是否申请成功
4、将文件读取到内存中
5、关闭文件
6、判断是否有效MZ标识
7、打印DOS
8、判断是否为PE标识
9、打印PE文件标识
10、打印标准PE
11、打印可选PE
12、释放内存

二、代码

1、打开文件,并判断是否打开成功

	//定义三个变量
	FILE	*pFile		=	NULL;			//用来接收打开的文件			
	DWORD	fileSize	=	0;				//用来接收文件大小
	LPVOID	pFileBuffer	=	NULL;			//用来接收

	
	pFile = fopen("c:/fg.exe","rb");	//打开文件
	if(!pFile)		//判断是否打开成功
	{
		printf("打开文件失败");
		return NULL;
	}

2、读取文件大小

	fseek(pFile,0,SEEK_END);		//将指针从开始的位置移动到末尾
	fileSize = ftell(pFile);		//获取数据大小

3、申请内存,并判断是否申请成功

	#include "stdlib.h"			
	//分配缓冲区(申请内存)
	pFileBuffer = malloc(fileSize);
	if(!pFileBuffer)
	{
		printf("分配空间失败");
		fclose(pFile);	//关闭文件
		return NULL;
	}

4、将文件读取到内存中

	fseek(pFile,0,SEEK_SET);	//将指针指向开始
	size_t n = fread(pFileBuffer,fileSize,1,pFile);	//将数据读取到缓冲区中
	if(!n)
	{
		printf("读取数据失败");
		free(pFileBuffer);		//释放内存
		fclose(pFile);			//关闭文件
		return NULL;
	}

5、关闭文件

fclose(pFile);	

6、判断是否有效MZ标识

	//
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值