首页
社区
课程
招聘
[原创]第二阶段第一题提交
发表于: 2007-8-29 05:22 6916

[原创]第二阶段第一题提交

2007-8-29 05:22
6916
缓冲区溢出,这很久以前的东西了,回想了老半天才回想起来。
硬着头皮写说明的说,实在是想不出来该写啥。哎

1、通过分析代码,程序打开一个指定的文件,在符合条件的情况下,
进行读操作。而作者也有意的留了一个缓冲区溢出的位置。
2、代码处理首八字节,分析了几十行的处理代码后,还原出来一个值,
这个值也就是跳转指令。缓冲区从这里开始控制程序。

代码部分
从JMP跳下来后的处理代码
008E007E                 83EC 04            sub esp,4
008E0081                 8BEC               mov ebp,esp  //堆栈修复
008E0083                 83C5 20            add ebp,20
008E0086                 E8 00000000        call 008E008B
008E008B                 58                 pop eax
008E008C                 8BC8               mov ecx,eax
008E008E                 83E9 4B            sub ecx,4B
008E0091                 33D2               xor edx,edx
008E0093                 52                 push edx
008E0094                 51                 push ecx
008E0095                 8BC8               mov ecx,eax
008E0097                 83E9 3B            sub ecx,3B
008E009A                 51                 push ecx
008E009B                 52                 push edx
008E009C                 FF15 4C024000      call dword ptr ds:[<&USER32.MessageBoxA>]             ; USER32.MessageBoxA
008E00A2                 59                 pop ecx //配合原来的CALL做的堆栈修复
008E00A3                 59                 pop ecx
008E00A4                 68 97034000        push 400397 //压入返回地址
008E00A9                 C3                 retn

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
验证通过~~
2007-8-29 07:55
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
3
41.262530756661599178572772597431
2007-9-2 21:07
0
游客
登录 | 注册 方可回帖
返回
//