首页
社区
课程
招聘
[求助]这个堆栈平衡吗?
发表于: 2011-9-26 14:39 5356

[求助]这个堆栈平衡吗?

2011-9-26 14:39
5356



__stdcall是被调用者自己平衡堆栈的,为啥又要pop一个eax呢?

这个是IDT HOOK ,跟中断有关系吗?
谢谢您的解答!

[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!

上传的附件:
  • 1.jpg (37.20kb,137次下载)
  • 2.jpg (18.54kb,138次下载)
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 4560
活跃值: (1082)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
图挂了
2011-9-26 15:03
0
雪    币: 24
活跃值: (1393)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
重新上传了图,眼看着不平衡,但是反而平衡,这是为啥呀
2011-9-26 15:16
0
雪    币: 206
活跃值: (86)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
4
自己调试下就知道平不平衡了。有可能push eax根本就不是call的参数。
2011-9-26 16:00
0
雪    币: 24
活跃值: (1393)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不平衡的话肯定会崩溃啊,调试过了,平衡,但是不知道为啥要这样做,eax是参数的,还是谢谢你!
2011-9-26 16:25
0
雪    币: 304
活跃值: (512)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
我靠。这代码简直可以说太蛋疼了

首先,那可是far call
堆栈中放的返回地址里有 cs寄存器

而对于far proc居然使用retn作为返回?
当然要 add esp,4 平衡一下了,因为堆栈里还有个cs寄存器呢!

正确做法是用 retf 4 啊!
太挫了。。幸好这cs是0008啊。

但是就算是idt hook ,也没必要far call是不是?

楼主要注意
retn
retf
对应一个近调用 一个远调用
2011-9-26 22:12
0
雪    币: 234
活跃值: (61)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
我感觉,这里的Push eax 和pop eax 仅仅是为了保存eax的内容吧
2011-9-27 12:58
0
雪    币: 24
活跃值: (1393)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢6楼,谢谢大家啊
2011-9-27 16:34
0
游客
登录 | 注册 方可回帖
返回