2009-06-06 12 views
13

Si pudiera ayudarme con este dilema que tengo. Ahora, sé C \ C++, sé asm, sé acerca de la inyección dll, sé sobre el direccionamiento de memoria virtual, pero simplemente no puedo entender cómo el software como CheatEngine y otros logran cambiar el valor de una variable en otro proceso.Cómo cambiar un valor en el espacio de memoria de otro proceso

Para aquellos que no lo sepan, las herramientas de terceros del motor trampa pueden escanear los valores en el espacio de memoria de un programa e identificar la ubicación de una variable con un valor determinado y modificarla.

Mi pregunta es, ¿cómo lo hacen?

Dada una dirección, si tuviera que escribir el código C, ¿cómo podría cambiar el valor en esa dirección perteneciente a otro proceso sin obtener un error de direccionamiento no válido?

Gracias.

Respuesta

12

Estoy bastante seguro de que esos programas pretenden ser depuradores. En Windows, comenzaría con DebugActiveProcess() e iré desde allí.

Ah, y la muy útil función ReadProcessMemory() (y WriteProcessMemory()).

+0

Gracias esto es lo que estaba buscando, funciona muy bien. (Para otros que lean esta solución, asegúrese de usar DebugActiveProcessStop cuando termine) –

+0

Asegúrese de llamar a DebugSetProcessKillOnExit() si no desea que el proceso que está depurando muera después de que termine de depurarlo. – mrduclaw

3

No puede hacer esto con el estándar C o C++, tiene que usar características específicas del sistema operativo. Por lo que necesita para decirnos qué sistema operativo está interesado en

+0

Lo siento, no especifiqué, estoy interesado en Windows, pero Linux sería genial para, tengo curiosidad por probarlo también –

4

en UNIX:. Ptrace()

+0

¿Puede cambiar también la memoria del otro proceso? – Matthew

+0

¿A diferencia de qué proceso? – Thomas

2

Usted también podría estar interesado en Detours:

software empaquetado para detouring API de Win32 y de aplicación.

+1

Gracias lea sobre desvío http://www.codingthewheel.com/archives/how-i-built-a-working-online-poker-bot-7. Experimento divertido ASCII \ graffiti bomb. Lástima que no está disponible fácilmente para 64 bits –

Cuestiones relacionadas