首页
社区
课程
招聘
[求助]一段弹出对话框的shellcode,错在哪里?
发表于: 2013-7-18 12:41 13736

[求助]一段弹出对话框的shellcode,错在哪里?

2013-7-18 12:41
13736
00400000>6A00                push 0                     ;压入结尾的0
00400002>687265764F          push 4F766572  ;压入字符串Over
00400009>8BC4                mov eax,esp            ;eax指向Over字符串
0040000B>33DB                xor ebx,ebx             ;ebx清零
0040000D>53                  push ebx
0040000E>50                  push eax
0040000F>50                  push eax
00400010>53                  push ebx
00400011>E8D4079577          call 77D507EA    ;调用MessageBoxA

结果没弹出对话框,崩溃。
怎么回事呢?这段shellcode有问题吗

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

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 1042
活跃值: (550)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这哪是shellcode,搜搜论坛的shellcode看看吧~
2013-7-18 13:32
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
1.0x77D507EA这个地址要确认一下是不是确实是MessageBoxA的入口地址
2.MessageBoxA这个函数是user32.dll的,非GUI应用程序默认是不加载这个dll的,如果这个DLL没有加载到进程内存空间,那么0x77D507EA这个地址是无效的,自然会崩溃。
2013-7-18 14:06
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
知道了,这段shellcode没有问题,是我拷贝到那个溢出空间的时候用了lstrcpy,这个函数在遇到NULL的时候就就停止,把shellcode截断了,只复制了0前面的一部分!
所以说是这样的,利用程序中lstrcpy溢出漏洞shellcode里不能出现00,否则会在拷贝的时候截断。我想办法把代码修缮一下把00去掉。

谢谢Morgion Rookietp师兄。
2013-7-18 15:56
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
5
depend看下77D507EA    地址是不是messageA 的地址
2013-7-18 16:23
0
雪    币: 1042
活跃值: (550)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
你那个call MessageBoxA还是硬编码呀。
2013-7-18 17:50
0
雪    币: 680
活跃值: (68)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
你只是调用了MessageBox()函数,使用的是固定地址,但是不同系统的函数地址是不一样的,你可以下载一个函数地址查看器,或者使用VC自带的depends查看MessageBox()的函数地址
2013-7-18 20:18
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
push 0干掉
2013-7-20 08:43
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9

xor ebx,ebx
push ebx
代替 push 0
2013-11-1 21:10
0
游客
登录 | 注册 方可回帖
返回
//