首页
社区
课程
招聘
未解决 [求助]指定位置申请内存一直失败
发表于: 2019-6-27 09:18 8052

未解决 [求助]指定位置申请内存一直失败

2019-6-27 09:18
8052
各位大神:
        小弟是一个新手,现想学习写一个简单的程序:把一个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位置的内存?

[课程]Android-CTF解题方法汇总!

最后于 2019-6-27 09:48 被wx_硬抗编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 3723
活跃值: (594)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
这个地址你申请不到的, 可以让系统给你分配默认地址的内存也一样能用的, 要是详细讲的话可以去了解一下分段分页机制.
https://bbs.pediy.com/thread-67336.htm ,这贴一楼讲的非常不错.
学习PE加载, 可以先用傀儡进程的技术来学习, 创建一个挂起的calc.exe进程, 然后把展开的PE复制过去执行. 最好是搜一下看看人家的代码, 以前的病毒经常用这种这种手段, 资料还是非常多的, 基本上代码拷贝过来就能用.
2019-6-27 09:49
0
雪    币: 12028
活跃值: (5604)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
这段地址是有可能被几个TEB块提前占坑的,还是动态申请做好重定位比较好。
2019-6-28 19:02
1
雪    币: 1416
活跃值: (4398)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
jmp,call这些要跳转的偏移是可以算,把偏移写进去就可以了
2023-3-26 14:14
0
游客
登录 | 注册 方可回帖
返回
//