Ahí vas pero te estás confundiendo los tipos de modos
http://computacion.cs.cinvestav.mx/~ameneses/pub/tesis/ltesis/node29.html
http://es.wikipedia.org/wiki/Modo_protegido
http://es.wikipedia.org/wiki/Modo_real
Nop, en 32 bits sería 00000000h ... 7FFFFFFFh, eso son los 2gb de direccionamiento en memoria para modo usuario (las app de escritorio que haces en vb, corren en este nivel de privilegios). Los otros 2gb son para modo kernel.
Si tu quieres modificar la diercción 40156F del game, pero tu trainer haces esto:
mov dword ptr [40156Fh], -1
NO estás modificando la dirección de cualquier proceso, estás modificando la dirección 40156F que pertenece a tu trainer.
Para modificar la dirección 40156F de otro proceso se usa la API WriteProcessMemory.
WriteProcessMemory ( hProcesoAModificar, 40156F, &lpbuffer, nSize, NULL)
http://computacion.cs.cinvestav.mx/~ameneses/pub/tesis/ltesis/node29.html
http://es.wikipedia.org/wiki/Modo_protegido
http://es.wikipedia.org/wiki/Modo_real
Cita de: $Edu$ en 19 Mayo 2012, 06:38 AM
Donde cada programa es un proceso nuevo, y todos arrancan desde el address 0000 hasta FFFF (para dar un ejemplo, no se a cuantos llegan, los q sean 4gb en hexadecimal no?)
Nop, en 32 bits sería 00000000h ... 7FFFFFFFh, eso son los 2gb de direccionamiento en memoria para modo usuario (las app de escritorio que haces en vb, corren en este nivel de privilegios). Los otros 2gb son para modo kernel.
Cita de: $Edu$ en 19 Mayo 2012, 06:38 AM
Entonces el Trainer esta configurado para que modifique el address 40156F por ejemplo pero indicando que se refiere a la del proceso del juego que se indico. Ya que sino modificaria a cualquier otro proceso abierto q tenga la misma address (cosa que tendra).
Ahora si entendi? esque es lo mas logico que se me ocurre ahora.
Si tu quieres modificar la diercción 40156F del game, pero tu trainer haces esto:
mov dword ptr [40156Fh], -1
NO estás modificando la dirección de cualquier proceso, estás modificando la dirección 40156F que pertenece a tu trainer.
Para modificar la dirección 40156F de otro proceso se usa la API WriteProcessMemory.
WriteProcessMemory ( hProcesoAModificar, 40156F, &lpbuffer, nSize, NULL)