-
-
未解决 [求助]VirtualAllocEx指定位置申请内存一直失败 50.00雪花
-
发表于: 2019-6-27 09:54 2389
-
小弟是一个新手,现想学习写一个简单的程序:把一个exe程序读到内存,拉伸后贴到指定位置修改OEP运行。
具体步骤如下:
1、新建一个工程xxxx,将此工程的ImageBase改为0x02000000,让自己的程序在高空运行;
2、用VirtualAllocEx(GetCurrentProcess(),(LPVOID)0x400000,0x136000,MEM_RESERVE,PAGE_READWRITE);在0x400000的位置申请0x136000大小的内存
3、用fread()函数将一个exe读到内存中(正常exe程序的ImageBase都是0x400000);
4、将读到内存中的exe拉伸后贴到申请的0x400000位置的内存中;
5、根据导入表自己载入DLL,修改IAT表;
6、跳转到exe的OEP执行。
但是小弟在用 VirtualAllocEx()申请内存时,始终申请不到内存。
于是小弟写一个简单的程序进行测试,代码如下:
编译后用OD进行调试,发现在我要申请的内存段0x00400000--0x00536000范围内有几段priv 00021004 和 priv 00021104的数据,具体如图:
这些数据的位置不是固定的,每次重启exe,数据的位置都是变化的,但是总在这附近。总有数据占用了我要申请的内存。
求各位大神指点,这些数据是怎么产生的?要怎样避免这些数据占位置?或者说要怎样才能申请到0x00400000--0x00536000位置的内存?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!