首页
社区
课程
招聘
[求助]hook ntdll RtlAllocateHeap以后,出现堆栈溢出
2006-6-22 11:29 8848

[求助]hook ntdll RtlAllocateHeap以后,出现堆栈溢出

2006-6-22 11:29
8848
hook以后情况如下:
RtlAllocateHeap :
7C935D4    JMP  MYFUNC //PUSH  204H
7C935D9     ..........

MYFUNC: push ebp
         mov ebp,esp
         AAAAAAAAAA
         mov esp,ebp
         pop  ebp
         jmp CCCCCCC
CCCCCCC   PUSH  204H
          JMP   7C935D9
如果在位置AAAAAAA不加代码,运行正常,可是如果加入
push        offset string "RtlAllocateHeap  \n" (1002ed1c)
  call        printf (10003080)
  add         esp,4

则在调用printf的过程中会出现栈溢出,怎么会这样呀?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
打赏
分享
最新回复 (6)
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
Isaiah 10 2006-6-22 13:59
2
0
进入你的函数前,注意保护cpu context.
就是保护寄存器,可能是破坏了寄存器的值
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
Isaiah 10 2006-6-22 14:00
3
0
因为printf会改变寄存器的值。
jmp进入后pushad
jmp出去前popad
雪    币: 222
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
drwch 3 2006-6-22 14:59
4
0
__stdcall的context倒不用另外保护,我在想是不是楼主的这行STRING忘了收尾了,呵呵
雪    币: 254
活跃值: (126)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
heXer 3 2006-6-22 15:07
5
0
因为printf里面会调用RtlAllocateHeap
不溢出才怪
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
Isaiah 10 2006-6-22 18:47
6
0
楼上正解!!
牛!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lrh 2006-6-23 10:08
7
0
那就是出现死循环了,不好意思没有注意到,多谢大家的回复
游客
登录 | 注册 方可回帖
返回