Foros > C++: ?C?mo utilizar ReadProcessMemory con una direcci?n din?mica?

  1. ahrion

    Mensajes [2] - Enviado el Viernes 19 de Junio de 2009 a las 01:26hs

    Hace poco me inici? con C++.
    Y me surgi? esta duda : Yo puedo leer datos de otra aplicaci?n obteniendo el handle del proceso y luego leyendo la direcci?n de memoria con ReadProcessMem ory.
    Pero esta direcci?n es din?mica lo cual implica que cuando se reinicie windows o a veces cuando se reinicie la aplicaci?n en cuesti?n, cambie. Y al cambiar, mi aplicaci?n modifica una direcci?n de memoria no deseada. Si, es la misma direcci?n que modifiqu? anteriormente, y que funcion?. Pero al ser reiniciada la aplicaci?n los datos que yo deseo leer ya no est?n en esa direcci?n. Y al modificarla podr?a interrumpir la ejecuci?n del programa o causar errores (cosa que no deseo) ya que la aplicaci?n podr?a estar usando esa direcci?n para otro prop?sito.

    En resumen. ?C?mo utilizar ReadProcessMem ory con una direcci?n din?mica?
    O mejor dicho : ?C?mo averiguar desde qu? direcci?n lee los datos luego de reiniciar el programa/pc?

    Gracias a todo el que se disponga a ayudarme.

  2. Psycho

    Mensajes [6] - Enviado el Viernes 16 de Octubre de 2009 a las 23:56hs

    Primero debes conseguir un puntero el cual es un address que tiene el valor de 4 bytes es decir:

    El puntero obtiene los datos del address que es variante, pero el puntero no es variante lo que quiere decir que si obtienes el puntero de tu address variante siempre obtendras el address variante asi reinicies miles de veces el ordenador.

    Te lo dejare un poco m?s explicito:

    Yo llevo tiempo creando cheats o hacks para counter strike, y me pasaba lo mismo que tu pero me puse a investigar un poco sobre lo mismo y encontre que:

    Toda direccion variante tiene un puntero, es decir un address que lleva al address variante, este puntero es un address estatico osea que nunca se movera de donde esta.

    Entonces cuando quieras trabajar con algo asi tienes que encontrar el puntero aqui un ejemplo:

    Mi puntero en counter strike es 025069BC, y al resultado de ese puntero es decir leemos los datos de ese puntero con "readprocessmemory" leemos 4 bytes para que nos de un total de un address normal, se le sumara lo que falte para llegar a nuestra bendita direccion variante en mi caso 7C, lo que llevara a el address variante.

    Los datos que obtendra el "02505BC" seran variantes pues sera el address que se cambia de lugar a cada momento luego de reiniciar la aplicacion o reiniciar el sistema u otros.

    Ahora te preguntaras, "como sacaste el puntero", bien es f?cil si no andas leyendo una direccion de un juego con proteccion claro esta.

    Si quieres que te explique como sacar el puntero contactame por messenger pues es un poco largo el proceso y me comeria mucho tiempo en decirtelo por aca.

    Disculpa por lo repetitivo de mi respuesta pues no encontraba la manera mas "facil" de decirte como hacer tal cosa.

    Saludos.

  3. Psycho

    Mensajes [6] - Enviado el Sabado 17 de Octubre de 2009 a las 00:17hs

    Oh mi messenger es:

    [email protected], avisame el dia que quieras contactarme pues casi no abro el messenger, ya te tengo todos los ejemplos de readprocessmemory y writeprocessmemory. hasta pronto.


responder

Para poder responder a este tema tenes que ingresar. Si no tenes una cuenta podes registrarse gratis..

publicidad

API DE FACEBOOK
GOOGLE CALENDAR API
GOOGLE MAPS API