首页
社区
课程
招聘
[求助]如何获取一个程序的堆地址空间范围和栈地址空间范围?
发表于: 2010-9-15 15:21 9970

[求助]如何获取一个程序的堆地址空间范围和栈地址空间范围?

2010-9-15 15:21
9970
收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 57
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
各位大神啊 ,回个信啊……
2010-9-15 23:45
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
3
dd fs:[18h]

7FFDF000  0012FFE0  (Pointer to SEH chain)
7FFDF004  00130000  (Top of thread's stack)
7FFDF008  0012D000  (Bottom of thread's stack)
2010-9-15 23:55
0
雪    币: 57
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=forgot;858888]dd fs:[18h]

7FFDF000  0012FFE0  (Pointer to SEH chain)
7FFDF004  00130000  (Top of thread's stack)
7FFDF008  0012D000  (Bottom of thread's stack)...[/QUOTE]

谢谢大牛指点
再次请教下,在缓冲区溢出检测中,需要对函数的返回地址进行判断(别人blog上写的),看其是在栈地址空间还是堆地址空间……

进程的堆有好几种,请问下一个地址是不是在进程的堆里,该怎么判断啊?
2010-9-16 12:53
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
你CALL进去的时候 记录返回值不就完了
2010-9-16 14:16
0
雪    币: 57
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
call进去的时候记录的返回值并不代表函数执行完之后就返回该位置啊,如果溢出了呢……
2010-9-16 15:00
0
雪    币: 57
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=forgot;858888]dd fs:[18h]

7FFDF000  0012FFE0  (Pointer to SEH chain)
7FFDF004  00130000  (Top of thread's stack)
7FFDF008  0012D000  (Bottom of thread's stack)...[/QUOTE]

测试了下,发现 :
  fs:[4] - fs:[8] = windows给当前线程初始化的时候给栈空间分配的物理页面的大小
  
  在线程中,栈的物理页面的大小是可以动态增长的,但是fs:[8]的值是固定的,所以是不是说
  地址从fs :[8] 到 fs:[4] 一定属于线程的栈地址空间,但可能不是线程的栈地址空间的全部?
2010-9-16 17:10
0
游客
登录 | 注册 方可回帖
返回
//