PE文件解析打印头部信息
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