Código:
DWORD dwDireccion = 0x00692B0C;
__declspec( naked ) void asmSalto() {
__asm
{
mov eax, dwDireccion
jmp Direccion
}
}
Se inyectan correctamente las instrucciones pero acá esta mi problema, las instrucciones originales de la dirección antes de ser inyectadas eran 6 bytes en la memoria pero con la inyección anterior equivale a mas de 6 bytes, lo que origina que se cuelgue el programa:
Instrucciones originales de 6 bytes:
Código:
0042276B - 29 83 64 04 00 00 - sub [ebx+00000464],eax
Se podría hacer con un simple salto; Pero da error el copilador, se vería en memoria asi:
Código:
__asm
{
jmp 0x00692B0C
}
Son solo 5 bytes en la memoria le agregamos 1 mas con un nop y tendríamos el salto correctamente:
Código:
00540967 - E9 A0 21 15 00 - jmp 00692B0C
0054096C - 90 - nop
Hay alguna forma de hacer el salto sin ocupar mas de 6 bytes? Agradecería mucho sus respuestas o comentarios.