好友
阅读权限10
听众
最后登录1970-1-1
|
有一个题目,将记事本的.exe文件读取到内存,并返回读取后在内存中的地址,并且将内存中的数据存储到另一个文件中,(.exe格式),然后双击打开,看是否能够使用.
本人写出来这个代码,将记事本读到内存中,然后再将内存的数据在读取到文件中
代码如下
#include "stdafx.h"
#include <stdlib.h>
#include <windows.h>
int main(int argc, char* argv[])
{
unsigned int num=0;
void* pf;
FILE* p=fopen("C:\\Windows\\system32\\notepad.exe","rb");
if (p==NULL)
{
printf("error!\n");
}
printf("ok!\n");
fseek(p,0,SEEK_END);
num=ftell(p);
fseek(p,0,SEEK_SET);
pf=malloc(num);
if(pf==NULL)
{
printf("error!\n");
}
unsigned int n=fread(pf,num,1,p);
fclose(p);
printf("%x\n",pf);
FILE* p1=fopen("c:\\note.exe","wb");
if(p1==NULL)
{
printf("error!\n");
}
else
{
unsigned int ret=fwrite(pf,num,1,p1);
}
fclose(p1);
free(pf);
return 0;
}
问题是自己存盘后的大小和系统本身记事本的大小不一致,但是功能和其他都是一样的,大小不一样这是什么原因呢??求指教 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|