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 Código: .386 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 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 ;) |