[TUTORIAL] Usando Pointers & Offsets

  • Hola Invitado ¿Quieres conversar con todos los usuarios de GamerzHacking?, No esperes mas y entra al canal de Discord dando clic AQUI
  • Hola Invitado, hemos decidido no subir mas videos de Game Hacking a la mierda de YouTube, mas informacion AQUI. Nuestro nuevo canal de videos ahora es COCOSCOPE.
  • Hola Invitado ¿Quieres formar parte del Staff de GamerzHacking?, No esperes mas y entra al siguiente enlace AQUI
  • Hola Invitado ¿Eres programador y quieres pertenercer GamerzHacking?, No esperes mas y entra a postular aqui AQUI

The Nullz

Administrador
Miembro del equipo
1 Nov 2015
1.206
227
63
28
Lima
gamerzhacking.com
Hola comunidad de GamerzHacking, en esta oportunidad hablaremos sobre Multi Level Pointers (Pointers Nivel Multi), específicamente para hacks externos. Estaremos usando ReadProcessMemory (RPM) y WriteProcessMemory (WPM), asi que si tu no sabes como son esas funciones o que hacen, pues te invito al siguiente link para que puedas comprender mejor sobre que realizan y como trabajan (
Por favor, Acceder o Registrarse para ver el contenido de las URL!
). Este tutorial es para principiantes (noobs) que se confunden en cuando usar pointers/offsets y su propósito en general. No diré aquí como buscar direcciones usando el CheatEngine porque ya existen muchos videos sobre ese tema. En el juego que me basare sera en Counter Strike No Steam 1.6.

Al intentar cambiar su healt (salud) o munición en el juego, tenemos que encontrar la dirección y luego cambiar el valor de ello una vez que obtengamos la dirección correcta. Al hacer hacks tenemos cosas como punteros estáticos (pointer static). Estos son punteros que siempre apunta a una cierta cosa. La dirección a la que apunta un puntero estático suele ser dinámica y cambiara cada vez que cierre y vuelva abrir el juego. En CS 1.6 No Steam y la mayoría de juegos no hay una dirección estatica para nuestra vida o munición por lo que tenemos que usar múltiples punteros de nivel (multi level pointer) para llegar a ella. Le mostrare como podemos llegar a nuestra dirección de health y la lógica general detrás de ella.

En Counter Strike No Steam 1.6 tenemos un puntero estático que apunta a nuestra dirección base del jugador. Ese puntero estático es 509B74. Recuerda que no es la dirección base del jugador esto APUNTA a TU dirección base de jugador. También tenemos los offsets como 0xF8 que es health (salud) y 0x150 que es munición. Los offsets 0xF8 y 0x150 de nuestra dirección base de jugador. Cuando añadimos F8 a nuestra dirección base del jugador entonces recibimos nuestra dirección de healt. Esto podría ser un poco confuso al comienzo, así que hice una foto que muestra un concepto general. Esto es especifico para encontrar la dirección de healt del jugador en CS 1.6 No steam.



El rojo es la dirección y el offset, las flechas verdes muestran el flujo lógico. Tenemos nuestra dirección estática 509B74. Esta dirección es un puntero (pointer) y siempre apuntara a nuestra dirección base de jugadores (Player Base). Nuestra dirección base de jugador siempre es dinámica y siempre cambiara cada vez que el juego se cierra y luego se abre. Nuestra dirección del health es dinámica también, pero el offset de nuestra dirección de health es siempre 0xF8. Entonces ¿Como llegar a nuestra health?, Uso de Multi Pointer Nivel (Multi Level Pointer). Primero analizaremos nuestro puntero de base de jugador(Player Base). A continuación , añadiremos nuestro offset F8 a esto. Esta nueva dirección que es el producto de nuestro base jugador + offset es nuestra direccion de health. Ahora podríamos utilizar esta direccion a WPM y cambiar nuestro valor de health o RPM y leer nuestro valor de health. Así que vamos a ver algún código que llegaría a nuestra dirección de health. Recuerda que este código no funcionara por si mismo porque necesitamos un identificador del juego. Esto es solo para mostrar el concepto general de pointers multi level.

C++:
Por favor, Acceder o Registrarse para ver el codigo.
El código que acabas de ver, lee lo que se almacena en nuestra variable pLocalPLayer, que es nuestro puntero a nuestra dirección base del jugador. A continuación, almacena que en playerObjectAddress que es lo mismo que nuestra dirección base del jugador. A continuación, agregamos nuestra base de jugadores y nuestro offset de health para obtener nuestra dirección de health . Podríamos hacer cosas como almacenar nuestro valor de health en int healthValue y mostrarlo, agregando el siguiente código.

C++:
Por favor, Acceder o Registrarse para ver el codigo.
Espero que este pequeño tutorial ayude a los nuevos hackers para entender la logica detras del uso de los punteros estaticos (pointers static) para direcciones y como usar los offsets. Voy a estar haciendo un tutorial sobre tecnicas de organizacion en hacks externos y mostrar funciones utiles que puede utilizar para hacer escaneo del pointer multi level mas facil. Si hay algun error por favor no dudes en hacerlo llegar para poder arreglarlo.

Saludos,
 
  • Like
Reactions: SFDa