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

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

2006-6-22 11:29
9202
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的过程中会出现栈溢出,怎么会这样呀?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

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