Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: mester en 7 Junio 2015, 22:29 pm



Título: ¿Cómo actúan los programas como Cheat Engine?
Publicado por: mester en 7 Junio 2015, 22:29 pm
¿Qué es lo que hacen para editar los valores de un programa que esta en ejecucion?
¿Cuál sería el esquema que utilizan?


Título: Re: ¿Cómo actúan los programas como Cheat Engine?
Publicado por: tincopasan en 8 Junio 2015, 09:34 am
Basicamente deberías conocer que es y como funciona un debugger o depurador, para ello también tendrías que conocer el uso de las apis y su estructura y parametros. Como algo fácil te diré que lo que hace es unirse a un proceso en ejecución (DebugActiveProcess),se obtiene la información del proceso con por ejemplo Process_information  y un vez hecho esto le hace trampa controlando los eventos con una función (WaitForDebugEvent) se implementa un manejador de eventos y se obtiene el estado de los registros, threads (etc) y una vez obtenidos la dirección de dichos eventos y registros se modifican en memoria (WriteMemory).
Esa es la versión super resumida de lo que hace.


Título: Re: ¿Cómo actúan los programas como Cheat Engine?
Publicado por: Regexp en 12 Junio 2015, 20:45 pm
Hace un tiempo estuve investigando por el tema. La api de windows ofrece diversas opciones para sobrescribir la memoria de otros programas. Hay ejemplos de ésto por internet también, al final de la respuesta dejaré algunos enlaces. Debes tener cuidado con éstos menesteres en caso que decidas utilizarlos.

Algunas funciontes: DebugActiveProcess(), ReadProcessMemory(), WriteProcessMemory(). En las páginas de microsoft hay información detallada acerca de esto.

Tres formas de inyectar tu código en otro proceso
http://www.codeproject.com/Articles/4610/Three-Ways-to-Inject-Your-Code-into-Another-Proces (http://www.codeproject.com/Articles/4610/Three-Ways-to-Inject-Your-Code-into-Another-Proces)

Acá una excelente respuesta de una pregunta relacionada con la tuya en StackOverflow
http://stackoverflow.com/questions/6016156/accessing-memory-of-other-applications-c (http://stackoverflow.com/questions/6016156/accessing-memory-of-other-applications-c)

Otros programas como WPE Pro http://foro.elhacker.net/ingenieria_inversa/tutorial_wpe_pro_captura_modifica_y_envia_paquetes_tcp_cheats_juegos-t405121.0.html (http://foro.elhacker.net/ingenieria_inversa/tutorial_wpe_pro_captura_modifica_y_envia_paquetes_tcp_cheats_juegos-t405121.0.html) también se utilizan con el fin que propones en el post. Respecto a ésto, quizá te interese http://libtins.github.io/ (http://libtins.github.io/)

Saludos.