勿在浮沙筑高台
一、流程
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
标识
//