#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
/*
功能:读取exe文件到内存
参数:文件名,指向FileBuffer指针的指针(目地为想要修改FileBuffer指针的指向,即指针的值)
返回值:读取的可执行文件字节数
*/
DWORD ReadPEToFileBuffer( const char* IN file_name, LPVOID* OUT FileBuffer)
{
FILE* pFile = NULL; //指向文件的指针
DWORD sizeOfFile=0; //文件大小,作为返回值
pFile = fopen(file_name, "rb"); //最后要释放指针
if (pFile == NULL)
{
printf("文件打开失败\n");
return 0;
}
fseek(pFile, 0, SEEK_END);
sizeOfFile = ftell(pFile);
fseek(pFile, 0, SEEK_SET);
*FileBuffer = malloc(sizeOfFile); //申请缓冲区
if (*FileBuffer == NULL)
{
fclose(pFile);
printf("malloc FileBuffer失败\n");
return 0;
}
size_t n = fread(*FileBuffer, sizeOfFile, 1, pFile); //写入缓冲区
if (!n)
{
fclose(pFile);
free(*FileBuffer);
printf("写入缓冲区失败\n");
return 0;
}
fclose(pFile);
return sizeOfFile;
}
03-10
373