首页
社区
课程
招聘
[求助]释放到VirtualAlloc里面的代码,怎么设定为新的ep?
发表于: 2012-6-22 12:14 5249

[求助]释放到VirtualAlloc里面的代码,怎么设定为新的ep?

2012-6-22 12:14
5249
如下面这段代码
#include <H.h>//这里包含了常要用的头文件
#define SIZE 0x1000
void main()
{
        LPVOID lpaddr=VirtualAlloc(NULL,SIZE,MEM_COMMIT,0x40);
        if(lpaddr!=NULL)
        {
                memset(lpaddr,0x90,SIZE);
                __asm
                {
                        mov eax,lpaddr
                        call eax
                }
        }
}
call eax进入lpaddr以后,假设我想把lpaddr当作新的entry point,该怎么dump?

可以在这里下载编译好的:
d.7z

[课程]Linux pwn 探索篇!

上传的附件:
  • d.7z (0.81kb,5次下载)
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
2
dump文件的时候一般都有选项指定新的EIP吧
2012-6-22 16:32
0
雪    币: 62
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
如果想直接把段代码的lpaddr地址的内存dump出来,会遇到这样的问题:

lpaddr的数值是20000,这个值是虚拟地址,但是并不存在于原始PE文件的任何一个节中。因此这样直接dump的话,根本就不能正常运行。。。

这里可以下载SDK版的这个程序,你试试能不能把新的EP设置为lpaddr.
d.7z
上传的附件:
2012-6-22 16:54
0
雪    币: 391
活跃值: (135)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
4
很老很基础的问题,楼主你可以参考这个帖子
http://bbs.pediy.com/showthread.php?t=48879
2012-6-22 19:13
0
雪    币: 62
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
。。。我的意思是dump出virtual alloc申请的内容,并把它转化为PE文件中的一部分。那篇帖子好像不是讲这个的。
2012-6-22 23:37
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
你所说的就是区块,这个 一般的DUMP工具都有 这功能的,多看看 破解视频吧。
2012-6-23 08:25
0
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
7
以你这小段代码,可以把这一段内存dump下来,然后使用LordPE的功能把它贴到文件末尾去,新加一个区段,然后将EP指向那边。

但是这是你这种情况,更常出现的情况是VirtualAlloc之后伴随着解压缩,重定位等操作,这样直接这么做就不行了,这时候需要你强制指定VirtualAlloc的返回值,然后将这个内存块贴到PE文件里面对应偏移的地方。
2012-6-23 09:24
0
雪    币: 62
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
嗯!谢谢你。
2012-6-24 00:11
0
游客
登录 | 注册 方可回帖
返回
//