Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Miseryk en 19 Abril 2012, 05:24 am



Título: [Resuelto] C++ + ASM
Publicado por: Miseryk en 19 Abril 2012, 05:24 am
Hola, en C++ abrí una etiqueta asm como __asm{}, en la cual dentro quise hacer lo siguiente:

__asm
{
     .... //CÓDIGO

    mov dword ptr [ebx], RetFakeSinPrologo
    .... //MÁS CÓDIGO

RetFakeSinPrologo:
   jmp eax

   .... //MÁS CÓDIGO
}

En la línea del mov dword obtengo el error: "error C2415: improper operand type", en ASM puedo hacerlo así, acá hay alguna forma de lograr éso?

Desde ya muchas gracias.


Título: Re: [Ayuda] C++ + ASM
Publicado por: david_BS en 19 Abril 2012, 05:35 am
si eso cuando los dos operandos son una referencia de contenido de memoria, es decir, estás tratando de hacer algo prohibido.


fijate así,

Código:
void func(){

DWORD addressx = (DWORD)&ExitProcess;
//DWORD RetFakeSinPrologo;

__asm{

mov edx, RetFakeSinPrologo
mov dword ptr [ebx],edx

mov eax, addressx
RetFakeSinPrologo:
jmp eax;
}
}


es un ejemplo para que veas como se compila..

EDIT
ah y la referencia a ebx debería ser en tu código un puntero por ejemplo DWORD*, por si no sabías.

EDIT 2
y por supuesto exitprocess requiere que se pase un parámetro por lo que deberías usar push+call y no jmp, que se usa para funciones naked y cuando la pila no sufre alteraciones (por el tema de los parámetros)