PE文件复看:打印PE头信息

本文详细介绍了如何将PE文件读取到堆空间,并实现了一个名为ReadPEfile_TO_FileBuffer的函数。接着,文章讲解了如何调用该函数并打印PE结构信息,特别提醒在处理节表时避免使用%s格式符以防止读取越界。最后,讨论了代码组织和规范,建议将常用函数的声明和实现分别放在头文件和源文件中。
摘要由CSDN通过智能技术生成

1.把文件读取到堆空间

以后对PE文件进行频繁的操作总是绕不开第一步,就是把PE文件的信息读取到自己申请的堆空间中,所以先实现这个函数,以便于以后频繁使用。
函数

  • ReadPEfile_TO_FileBuffer

功能说明

  • 把PE文件以二进制的读方式读取到FileBuffer堆空间
DWORD ReadPEfile_TO_FileBuffer(IN char* filepath, OUT void** FileBuffer)
{
   
	//打开文件,读取PE文件
	FILE* fileAddress = fopen(filepath, "rb");
	if (!fileAddress)
	{
   
		printf("打开文件失败!!");
		return 0;
	}
	//计算PE文件大小
	fseek(fileAddress, 0, SEEK_END);
	DWORD Filesize = ftell(fileAddress);
	//将指针移动到开头,为了下面读取文件
	//或者使用rewind函数
	fseek(fileAddress, 0, SEEK_SET);
	//申请堆空间
	void* Temp_FileBuffer = malloc(Filesize);
	if (!Temp_FileBuffer)
	{
   
		printf("分配Temp_FileBuffer空间失败!!");
		fclose(fileAddress);
		return 0;
		
	}
	memset(Temp_FileBuffer, 0, Filesize);
	//将文件内容读取到堆空间
	size_t Terms = fread(Temp_FileBuffer, Filesize, 1, fileAddress);
	if (!Terms)
	{
   
		printf("读入FileBuffer失败!!!");
		free(Temp_FileBuffer);
		fclose(fileAddress);
		return 0;
	}
	//关闭文件 ,将Temp_FileBuffer的值传给FileBuffer
	fclose(fileA
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值