es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pasando un entero a x86 ASM en C++

Estoy tratando de hacer un script de enganche en C++, y he configurado una función de prueba simple para este caso.

void __declspec(naked) testFunct()
{
int myInt;
myInt = 2000;
__asm{
mov eax, myInt
jmp [jmp_back_address]
}
}

Cuando intento pasar el entero, la función falla cuando se llama y el proyecto se bloquea. Sin embargo, cuando uso esto en su lugar, sin un valor entero, pasa correctamente:

void __declspec(naked) testFunct()
{
__asm{
mov eax, 2000
jmp [jmp_back_address]
}
}

¿Cómo puedo pasar con éxito el entero?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Se puede pasar correctamente el entero al declararlo como una variable global y luego hacer referencia a él en el código assembly. Por ejemplo:

    int myInt;
    myInt = 2000;
    
    void __declspec(naked) testFunct()
    {
        __asm{
            mov eax, myInt
            jmp [jmp_back_address]
        }
    }
    

Comments are closed.