首页
社区
课程
招聘
[旧帖] [求助]为什么两个机同的压栈指令可以忽略掉一个 0.00雪花
发表于: 2009-5-9 17:48 4570

[旧帖] [求助]为什么两个机同的压栈指令可以忽略掉一个 0.00雪花

2009-5-9 17:48
4570
比如
PUSH ESI
PUSH ESI
这样把一个NOP掉也可以正常运行,为什么会这样?

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

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 110
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
最好还是把问题说明清楚一点
应该要在一定条件下吧
2009-5-9 17:56
0
雪    币: 190
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那应该在什么条件下?
2009-5-9 17:58
0
雪    币: 110
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我也是菜鸟..
学习不久,不太懂
2009-5-9 17:59
0
雪    币: 949
活跃值: (18)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
5
堆栈平衡,nop掉一个,出栈的时候也要少pop一次,否则能平衡么?
2009-5-9 18:01
0
雪    币: 190
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不是啊,我实践过,可以的,关于堆栈平衡,进时用ENTER,出时直接LEAVE,这样破坏堆栈平衡也没问题。
2009-5-9 18:08
0
雪    币: 949
活跃值: (18)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
7
leave 和2个push无关,leave是下面2条指令
mov esp,ebp
pop ebp
2009-5-9 18:18
0
雪    币: 190
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
那二个相同指令是做免杀时碰到的,后来听说可以去掉一个,所以就试试,结果真成功了。不过不知为什么可以这样
2009-5-9 18:22
0
雪    币: 244
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
WWX
9
应该不平衡吧。
请提供详细的上下连接代码
2009-5-9 18:22
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
10
enter
...
...
...
...
...
leave
enter和leave指令就完成了维持执行这段代码前后堆栈平衡的工作。
欲了解更多,请参考指令手册
2009-5-9 18:30
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不能吧 是不是这一段代码没有跑
压栈之后必然有弹栈的代码 不可能一个压 两个弹吧
2009-5-9 22:43
0
雪    币: 623
活跃值: (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
12
猜测一下 楼主遇到的情况是恰巧或者说运气好没有出错
2009-5-10 01:36
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
加壳后的代码?
2009-5-10 07:54
0
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
堆栈不平衡不一定会导致程序运行出错吧
2009-5-10 13:10
0
雪    币: 144
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
大概巧合吧~~
2009-5-10 13:53
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
不会吧~~可以的吗?
2009-5-10 15:20
0
雪    币: 156
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
这个应该不可以。少一个的话,返回时如果不做处理,肯定要出错的。
2009-5-11 08:32
0
游客
登录 | 注册 方可回帖
返回
//