Pointers & Offests MHS5

Iniciado por calk9, 9 Noviembre 2013, 16:49 PM

0 Miembros y 1 Visitante están viendo este tema.

calk9

Hola foreros, les cuento que estoy intentando hallar el pointer y su respectivo offset de una dirección de memoria dinamica de un programa. Para hacerlo segui este tutorial http://foro.elhacker.net/empty-t342767.0.html. El problema es este: una vez que consigo la direccion de memoria del valor que quiero (dinamica), por ejemplo 48fba3cc voy a Search > Pointer Search y busco desde 48fb0000 hasta 48fba3cc. Una vez que hago esto siempre me salen aprox 70 resultados, entonces pruebo desde 48fba000 hasta 48fba3cc, pero igual me salen unos 50 resultados. Entonces empiezo a sumarle a la primera direccion, por ejemplo 48fba100 hasta 48fba3cc, 48fba200 hasta 48fba3cc, 48fba300 hasta 48fba3cc, 48fba400 hasta 48fba3cc, y asi sucesivamente, hasta que llega un momento que me salen unos 7 resultados de los cuales hay 1 solo que esta en color verde, asi que supongo que ese es el valor que busco (por ejemplo FF0B23CC). Entonces ahi supuestamente ya tengo el pointer en la columna "value" y el offset en la columna "Distance from". Entonces hago la prueba y sumo value + offset y me da como resultado la primera direccion de todas, entonces hasta ahora va todo bien. Luego cierro el programa y vuelvo a abrirlo para comprobar que sea la direccion que busco, pero resulta que FF0B23CC sigue teniendo el mismo valor que la vez anterior, entonces si sumo la columna value + offset (distance from) me sigue dando la primera direccion de todas (que ya no tiene el mismo valor porque era dinamica). Entonces, si la direccion que contiene el pointer siempre tiene el mismo valor, si le sumo el offset siempre me da el mismo resultado, que es la primera direccion de todas (pero como era dinamica una vez que volvi abrir el programa ya cambio). Como voy a obtener una nueva direccion de memoria haciendo la suma del pointer + offset si estos dos siempre tienen el mismo valor? Estoy haciendo algo mal?  :huh:

Gracias!! :)

Mad Antrax

Ese tutorial que has puesto utiliza una herramienta adicional para localizar el pointer. Con CE 6.3 no necesitas ninguna herramienta adicional.

Utiliza el Multilevel PointerScan que viene con CE, debería sacarte el pointer con 2 escaneos de direcciones. De todas formas... para que necesitas el pointer? Si quieres crear un trainer genérico simplemente crea un auto-assemble script, funciona en el 80% de los juegos.

Si por casualidad tu juego es de esos 20% que no aceptan un AutoAssembleScript deberás añadir un simple AoB() Scan a tu script y problema solucionado.
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

calk9

Hola, gracias por la respuesta. Prefiero usar MHS5, no hay forma de hacerlo? Por cierto no quiero hacer ningun trainer ni nada, simplemente obtener un determinado valor.

Gracias nuevamente !  :)

Mad Antrax

Cita de: calk9 en  9 Noviembre 2013, 18:48 PM
Hola, gracias por la respuesta. Prefiero usar MHS5, no hay forma de hacerlo? Por cierto no quiero hacer ningun trainer ni nada, simplemente obtener un determinado valor.

Gracias nuevamente !  :)

Pues supongo que si habrá alguna forma de hacerlo, pero desconozco el procedimiento usando MHS5 (es la primera vez que escucho el nombre de ese programa).

Si quieres puedo hacer un tutorial de pointers, pero deberá ser en Chea Engine ya que es la herramienta que más domino.
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

calk9

#4
Hola, sí, gracias, entonces tendré que usar Cheat Engine, no creo que sea un problema, solo que me gustaba más MHS que no requiere instalación.

Por cierto, quisiera saber si el procedimiento que hago es correcto, me podrías confirmar? (y no es solo para ti la pregunta, sino para cualquiera que pueda responderme). Suponiendo que encuentro una dirección estática que almacena el valor de un puntero. Entonces hago puntero + offset y me da una dirección dinámica que tiene el valor que busco. Luego, cuando reinicio el programa, vuelvo a acceder al valor de la dirección estática, voy bien? Esa dirección ahora tendría que tener otro valor, no es así? Es decir, otro puntero, entonces si hago nuevo_puntero + offset me da una nueva dirección de memoria que es dinámica y tiene el valor que busco. Es así el procedimiento? De ser así, el problema es que al reiniciar el programa la dirección estática siempre tiene como valor el mismo puntero, entonces al sumarle el offset siempre me da una dirección de memoria que al ser dinámica ya no contiene el valor que busco.  :huh:

Gracias nuevamente!  :xD

Mad Antrax

Cita de: calk9 en 10 Noviembre 2013, 22:36 PM
Hola, sí, gracias, entonces tendré que usar Cheat Engine, no creo que sea un problema, solo que me gustaba más MHS que no requiere instalación.

Por cierto, quisiera saber si el procedimiento que hago es correcto, me podrías confirmar? (y no es solo para ti la pregunta, sino para cualquiera que pueda responderme). Suponiendo que encuentro una dirección estática que almacena el valor de un puntero. Entonces hago puntero + offset y me da una dirección dinámica que tiene el valor que busco. Luego, cuando reinicio el programa, vuelvo a acceder al valor de la dirección estática, voy bien? Esa dirección ahora tendría que tener otro valor, no es así? Es decir, otro puntero, entonces si hago nuevo_puntero + offset me da una nueva dirección de memoria que es dinámica y tiene el valor que busco. Es así el procedimiento? De ser así, el problema es que al reiniciar el programa la dirección estática siempre tiene como valor el mismo puntero, entonces al sumarle el offset siempre me da una dirección de memoria que al ser dinámica ya no contiene el valor que busco.  :huh:

Gracias nuevamente!  :xD

Esa explicación de los punteros es algo extraña, yo los punteros los utilizo de la siguiente forma:

1- Busco un valor en un juego
2- El valor se almacena en una dirección dinámica
3- Busco una dirección estática que almacene la dirección dinámica de mi valor (puntero).

Al menos así entiendo yo los punteros. Luego están los MultiLevel Pointers, que básicamente es un puntero que apunta a un puntero que apunta a un puntero que apunta a la variable. No es muy común encontrar una variable de esa complejidad pero CheatEngine es la única tool que conozco capaz de escanear punteros de multi-nivel.

En cuanto tenga un rato (y tenga ganas) creo un tutorial de punteros.

Saludos!
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

calk9

Pues eso es exactamente lo que hago, el problema es que no hay ninguna dirección estática que almacene la dirección dinámica. Entonces lo que hago es buscar una dirección estática que almacene una dirección dinámica que se encuentre cerca de la que realmente me interesa. Luego le sumo el offset y listo.

El principal problema es que una vez que encuentro la dirección estática (paso 3), cuando reinicio el programa sigue almacenando la misma dirección, una y otra vez, y el valor del paso 1 ya se encuentra en otra dirección. Me explico bien? Que estoy haciendo mal?

Gracias de nuevo!