Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Rozor en 15 Septiembre 2007, 12:59 pm



Título: Codigo asm, ensambla pero falla.
Publicado por: Rozor en 15 Septiembre 2007, 12:59 pm
Los dos ensamblan pero no funcionan.



Código:
.386
.MODEL FLAT, STDCALL
.STACK
.DATA

 txt db "owned you", 0
 cap db "p**a", 0



.CODE

 Inicio:

          xor eax, eax
          xor ebx, ebx
          pop ebx
          mov ebx, eax
          push eax
          mov ebx, 1141211ah
          sub ebx, 11010110h
          push ebx
          xor ebx, ebx
          mov ebx, 11412111h
          sub ebx, 11010101h
          sub ebx, 00000010h
          push ebx
          push eax
          xor eax, eax
          mov eax, 7e3d058ah
          call dword ptr [eax]
          pop eax
          pop ebx
          leave
          ret

end Inicio





Código:
.386
.MODEL FLAT, STDCALL
.STACK
.DATA

 txt db "owned you", 0
 cap db "p**a", 0



.CODE

 Inicio:

          push 00h
          push offset cap
          push offset txt
          push 00h
          mov eax, 7e3d058ah
          call dword ptr [eax]
          pop eax
          pop ebx
          leave
          ret

end Inicio


Gracias


Título: Re: Codigo asm, ensambla pero falla.
Publicado por: karmany en 15 Septiembre 2007, 13:44 pm
Claro, porque estás intentando acceder a una librería que tu programa todavía no ha cargado con Import Table. Me imagino que estás intentando acceder a MessageBoxA en user32.dll..

Carga primero la librería user32.dll.

PD. Por cierto, es posible que si pones una dirección fija (7E3D058A) sólo funcione bien en tu ordenador.

Editado después:
Y llamas mal a la API: Sólo con que pongas Call EAX ya compilará bien.

Éste código te funcionará bien:
Código:
.386
.model flat, stdcall



include kernel32.inc
includelib kernel32.lib

.stack
.data
txt db "owned you", 0
cap db "p**a", 0
librery db "user32.dll", 0

.code
Inicio:
          invoke LoadLibrary, addr librery
  push 00h
          push offset cap
          push offset txt
          push 00h
          mov eax, 7e3d058ah
          call eax
          pop eax
          pop ebx
          leave
          ret
         
end Inicio


Título: Re: Codigo asm, ensambla pero falla.
Publicado por: Hendrix en 15 Septiembre 2007, 13:51 pm
Estas intentando llamar a alguna API???

Bueno, supongo que lo sabes, ya que se que te enteras bastante de esto, pero te lo recuerdo, que con direcciones harcodeadas solo funcionara en tu PC ;)

Otra es que necesitaras cargar la libreria donde se encuentra esa API, si no esta cargada es normal que pete...

Un Saludo :)

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.



Título: Re: Codigo asm, ensambla pero falla.
Publicado por: Rozor en 15 Septiembre 2007, 14:31 pm
Si, lo hice por que vi en un tuto o code no recuerdo bien, pero al principio ponia

extern ExitProcess:PROTO
...
...
...



Pero tampoco funciono y la llamada a la api tambien lo vi.


Título: Re: Codigo asm, ensambla pero falla.
Publicado por: Hendrix en 15 Septiembre 2007, 15:16 pm
Como te dijo Karmany y despues yo, para llamar a X api tienes que asegurarte de que la libreria de la API este cargada, si no esta cargada la puedes cargar tu mismo con loadLibrary, y con GetProccAddress puedes sacar la dirección de la API y asi llamarla. Si no quieres cargar ninguna libreria, para asi ahorrar "espacio" en disco, puedes leerte algun tuto sobre como hacer Shellcodes universales, que al fin y al cabo se trata de sacar primero la dirección en memoria del Kernel, luego, una vez tenemos esa dirección, sacar la de LoadLibrary y la de GetProccAddres, y una vez con eso ya podemos cargar cualquier libreria y usar cualquier api.

Es solo un ejemplo  ;)