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

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

2013-7-18 12:41
13539
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有问题吗

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

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

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

xor ebx,ebx
push ebx
代替 push 0
游客
登录 | 注册 方可回帖
返回