(...)acabo de compilar el codigo x64 bits y me lanza 2 errores;
// En los otros 4 la distancia del salto
*((signed int *) BufferFN)= DirFN - BufferFN + 3; // ----> ERROR LINEA 85
// Metemos la distancia del salto
*((signed int *) DirFN)=DirYoFN - DirFN - 4; // ERROR -> LINEA 102
1>..\..\..\..\..\Desktop\arquivos\DLL.cpp(85): warning C4244: '=' : conversión de '__int64' a 'int'; posible pérdida de datos
1>..\..\..\..\..\Desktop\arquivos\DLL.cpp(102): warning C4244: '=' : conversión de '__int64' a 'int'; posible pérdida de datos
Alguien sabe porque pasa eso?
COMPILADO EN VISUAL STUDIO 2012 x64 bits -> Windows 10
Es porque estás manejando direcciones de memorias con
int(32 bits) en un código que debería estar para
__int6464(64 bits)....
Una recomendación de buena práctica, siempre que manejes direcciones de memoria nunca la reinterpretes o las definas con "
signo" (
signed int en este caso), manejando sin signo ("
unsigned tipo") vas a poder evitar este tipo de advertencias...
Respecto a la longitud del hook, recomiendo tomar algún depurador como
x64dbg y probar a mano el/los opcode/s y la cantidad de bytes necesarios para hacer el salto para hookear...
B#