La dirección que encuentro con cheat-engine cambia cada vez que cierro y abro el programa.
Intente con este codigo:
(...)
Si encuentro la memoria con cheat engine y sin cerrar el programa cambio el valor de 0X0113FE78 funciona bien pero si cierro y vuelvo a abrir el programa ya la dirección no es la misma y me tira el error de 487 ERROR_INVALID_ADDRESS.
Podés probar lo siguiente:
Buscar la dirección de memoria y comprobar si está dentro del espacio de memoria de un módulo. En caso de que dicho módulo tenga información de reubicación buscar la imagebase y el tamaño del módulo cargado en memoria y analizar donde está y hacer lo que quieras con la dirección de memoria a buscar. En caso de que no esté en un módulo (posiblemente esté en el heap) tendrás que buscar referencias a la dirección de memoria que quieras buscar, una vez que la encuentres buscar a qué módulo hace referencia, verificar si dicho módulo contiene información de reubicación, en caso de que lo tenga tu programa debe buscar la imagebase y el tamaño del módulo cargado en memoria, analizar el puntero y
verificar que lleve a una dirección válida y listo, en caso de que no tenga información de reubicación verificas su imagebase y le sumás el offset (
analizado en memoria el offset) para conseguir la dirección de tu puntero
verificando también que en tiempo de ejecución el puntero lleve a una dirección válida.B#