UTNianos

Versión completa: Cómo funciona Cheat Engine?
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Bueno resulta que hoy estaba jodiendo con el Cheat Engine (es un programa que te permite ubicar posiciones de memoria de un proceso en base a su valor, y editarlo a gusto) y me acordé de la cursada de SO que te explican de la memoria privada de cada proceso, que es inaccesible por otros procesos (stack, heap, etc).

Entonces cómo funciona el Cheat Engine? claramente accede a la memoria de otro proceso sin ningún problema.
Usa la misma idea que un debugger. Sin entrar en mucho bajo nivel, cuando un debugger crea un proceso, es su padre. Entonces, como tal, tiene acceso a ciertos privilegios. Hay un par de system calls que te permiten leer y escribir la memoria de otro proceso. Esto requiere permisos del SO, pero bueno... sos vos el que esta corriendo ese programa asi que se los das =P

Si quieren ir un poco mas alla, este link es interesante: http://mohit.io/blog/debugging-modifying...t-runtime/
Y ademas pueden mirar: https://msdn.microsoft.com/en-us/library...S.85).aspx y https://msdn.microsoft.com/en-us/library...S.85).aspx
ahammm entonces todo lo que aprendí es mentira!


gracias adri =D
Sí, los de Operativos te mienten descaradamente todo el tiempo.

Yo había encontrado este link hace unos meses, pensando en el tema de los debuggers: http://www.alexonlinux.com/how-debugger-works

No leí completo el de Adro, pero me parece mejor redactado aunque un poco menos específico, quizá. Como que se complementan bien: este que te paso es re techie y te muestra cómo está implementado el debugger, je.

Mañana me leo bien el del Adro.
en windows hay dos funciones de la API, una es para leer la memoria y otra para escribir... Despues hay otras tecnicas, donde podes levantar la memoria mapeada... y varias cosas mas...

Si queres controlar aun mas un proceso, con el create process de windows, podes manejar aparte el standar input y output como streams cotidianos...

Como dijeron, se puede hacer de todo...
Los que crackean sistemas Apple por ejemplo, suelen llenar con mierda casi el 100% de la memoria, entonces se le facilita buscar procesos en la misma... onda... tenes 100 megas de ram total, libres 90 megas, entonces tenes procesos comiendo 10 megas.... lleno la memoria con MI MIERDA, y voy paneando toda la memoria, y preguntando:

"Esta es mi mierda" ? "Es mi mierda" : "Puede que sea otro proceso"

Otra cosa que se puede hacer, es inyectar codigo de ASM... parece mas jodido de lo que es, hay un par de programas que te permiten decompilar el exe, modificarlo, debugearlo y volver a compilarlo... En los EXE suelen haber fragmentos de bytes que son basura, ahi le podes agregar tu propio codigo... lo que hacen es hacer llamadas a una DLL que te permite controlar de forma remota el proceso y su memoria.

En C++ llamar a una dll te puede llevar 10 lineas,
en ASM, te puede llevar 50 o 60, no es tanta la diferencia y mucho del laburo es un copy paste...
Jajajajajaja vallo, no te mentimos (tanto). Por un tema de seguridad un proceso no puede acceder asi como asi a la memoria de otros procesos. Tenes que pasar por el SO para eso. Y el SO te da algunas funciones para eso, pero porque asi lo quiere. No es un tema de seguridad =P.
jajaja sisi, entiendo, tenés que tener que permisos de administrador (heavy)
Mentira, te está inventando excusas. Adriano miente.
si hiciera de nuevo el tp de operativos lo llenaría de WriteProcessMemory cada vez que no me deja acceder a esa porción de memoria
linndo, volaria mas que de costumbre tu nuevo tp =P
URLs de referencia