Autor
|
Tema: Codigo asm, ensambla pero falla. (Leído 2,137 veces)
|
Rozor
Desconectado
Mensajes: 270
As I Walk Through The Valley Of The Shadow Of Dead
|
Los dos ensamblan pero no funcionan. .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
.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
|
|
|
En línea
|
out in the streets they call it murder....
|
|
|
karmany
|
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: .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
|
|
« Última modificación: 15 Septiembre 2007, 13:53 pm por karmany »
|
En línea
|
|
|
|
Hendrix
|
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.
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
Rozor
Desconectado
Mensajes: 270
As I Walk Through The Valley Of The Shadow Of Dead
|
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.
|
|
|
En línea
|
out in the streets they call it murder....
|
|
|
Hendrix
|
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
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
|
|