Creacion de un trainer en c++

Iniciado por patilanz, 1 Octubre 2014, 21:09 PM

0 Miembros y 1 Visitante están viendo este tema.

ivancea96

No creo, pero haz una prueba:
Mira qué punteros apuntan a la dirección de la variable que encuentras.
Mira qué modifica la variable.

BloodSharp

Cita de: patilanz en  2 Octubre 2014, 20:45 PM
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#



patilanz

Cero que me faltan conocimientos para poder hacer lo que me decís.
No se lo que es la imagebase...
Estibe buscando por google y esta muy relacionado con los rootkits pero encontré esto:
http://ns2.elhacker.net/timofonica/manus/Formato_de_ficheros%20ejecutables%20_Formato%20PE_.pdf

No se si me servirá y ademas es solo para windows pero quiero aprender mas sobre la memoria y los módulos. Supongo que necesitare aprender ensamblador ?
Me podéis recomendar algún pdf o algo para aprender y luego intentar de nuevo hacer mi trainer  :D

Un saludo

BloodSharp

#13
Cita de: patilanz en  3 Octubre 2014, 21:33 PM
Cero que me faltan conocimientos para poder hacer lo que me decís.
No se lo que es la imagebase...

Cita de: msdnImageBase

   The preferred address of the first byte of the image when it is loaded in memory. This value is a multiple of 64K bytes. The default value for DLLs is 0x10000000. The default value for applications is 0x00400000, except on Windows CE where it is 0x00010000.

Cita de: patilanz en  3 Octubre 2014, 21:33 PMEstibe buscando por google y esta muy relacionado con los rootkits pero encontré esto:
http://ns2.elhacker.net/timofonica/manus/Formato_de_ficheros%20ejecutables%20_Formato%20PE_.pdf

Si querés hacer un rootkit es más fácil inyectar una dll y modificar la memoria dentro del mismo espacio de memoria del proceso que hacerlo externamente como vos estabas haciendo en tu código :P

Cita de: patilanz en  3 Octubre 2014, 21:33 PMSupongo que necesitare aprender ensamblador ?

No necesariamente aunque serviría mejor para buscar punteros y direcciones de memorias e incluso ver como funciona internamente el programa que querés modificar...

Cita de: patilanz en  3 Octubre 2014, 21:33 PMMe podéis recomendar algún pdf o algo para aprender y luego intentar de nuevo hacer mi trainer  :D

¿Probaste mirando la sección de ingeniería inversa del foro? Creo que ahí había algo de info acerca de cheat-engine (búsqueda de memoria,punteros,etc...)...


B#



patilanz

Hola me mire el tutorial http://foro.elhacker.net/ingenieria_inversa/tutorialcreacion_de_trainers_con_ollydbg_y_cheat_engine-t342664.0.html y lo intente de nuevo.
Tengo el trainer bien hecho con cheat engine y olly conseguí la memoria que me agrega 1 a la variable en el código pero luego cambio el valor con mi programa y no funciona



En la imagen se ven las direcciones. Donde fallo?

Saludos