首页
社区
课程
招聘
[求助]请问这是为什么?
发表于: 2007-4-23 22:44 4349

[求助]请问这是为什么?

2007-4-23 22:44
4349
0081D000 >  55              push    ebp
0081D001    8BEC            mov     ebp, esp
0081D003    6A FF           push    -1
0081D005    68 1D321305     push    513321D
0081D00A    68 88888808     push    8888888
0081D00F    64:A1 00000000  mov     eax, dword ptr fs:[0]
0081D015    50              push    eax
0081D016    64:8925 0000000>mov     dword ptr fs:[0], esp
0081D01D    58              pop     eax
0081D01E    64:A3 00000000  mov     dword ptr fs:[0], eax
0081D024    58              pop     eax
0081D025    58              pop     eax
0081D026    58              pop     eax
0081D027    58              pop     eax
0081D028    8BE8            mov     ebp, eax
0081D02A    E8 3B000000     call    0081D06A
0081D02F    E8 01000000     call    0081D035

0081D000是入口点(入口点在数据段),我把0081D000到0081D028全部NOP掉了,但是程序就不能正常运行了,可以看出来我NOP掉的那段本身没有任何的作用,这个是为什么呢?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 295
活跃值: (346)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
2
以普通的逻辑来讲, NOP掉以后, 功能完全一样. 但是产生了以下区别:
1. 如果读 0081D000 到 0081D028 中的任何内容,将得到不一样的结果.
2. 运行到0081D02A的时候, [ESP-04], [ESP-08], [ESP-0C], [ESP-10], [ESP-14]中,将不再是确定的值, 如果在子程序0081D06A中读一下其中的某一值, 就能读出区别, 当然[ESP-04]要除外.
2007-4-24 00:59
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
当然[ESP-04]要除外

请问为什么?
2007-4-24 07:24
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
4
call指令,会改写 ESP-04。。。还是看不懂,就自己复习一下汇编指令吧。。。

如果都NOP掉了,还会丢失SEH的安装吧
2007-4-24 10:16
0
游客
登录 | 注册 方可回帖
返回
//