Vereis, estoy programando X programa y para ello necesito llamar a una funcion "dinamicamente", o sea, tengo que generar el codigo binario a partir de un unsigned long que contiene la direccion de la funcion a llamar, la verdad es que nunca habia echo esto, por lo tanto al igual que hice con el push, hice esto.
Pero en ese momento me di cuenta de que las direcciones de los calls son relativas y no absolutas, estuve buscando por google y no encontre nada que me aclarara como calcular la direccion.
Alguien tiene idea de como calcular la direccion que habria que poner justo despues del 0xE8?
Código (cpp) [Seleccionar]
BYTE CallSignature[5];
CallSignature[0] = 0xE8; //! CALL opcode
*(DWORD*)( CallSignature + 1 ) = dwFunctionAddress;
Pero en ese momento me di cuenta de que las direcciones de los calls son relativas y no absolutas, estuve buscando por google y no encontre nada que me aclarara como calcular la direccion.
Alguien tiene idea de como calcular la direccion que habria que poner justo despues del 0xE8?