[TUTORIAL] Usando POINTERS & OFFSETS

  • Hola Invitado, si deseas saber que es lo que paso con nuestro servidor de discord, puedes ingresar al siguiente enlace Discord


194
Me Gusta
68
Temas

c0de

MOV EAX, EDX
Registrado
19 Abr 2020
Mensajes
125
Ubicación
Localhost
Mejores respuestas
0
LV
0
 
Hola a todos, este es un breve tutorial sobre punteros multinivel específicamente para Hacks externos. Usaremos ReadProcessMemory (RPM) y WriteProcessMemory (WPM), así que si sabes cómo son esas funciones o qué hacen, mira mi tutorial sobre ellas porque hará que sea más fácil de seguir. https://gamerzhacking.com/threads/readprocessmemory-writeprocessmemory.22/ Este tutorial es para novatos que se confunden con el uso de punteros / desplazamientos y su propósito general. No te mostraré cómo encontrar direcciones usando el motor de trucos porque hay muchos videos sobre eso. El juego al que me referiré es Assault Cube. Vamos a empezar.

Cuando intentamos cambiar su salud o munición en un juego, tenemos que encontrar la dirección y luego cambiar su valor una vez que obtengamos la dirección correcta. Al hacer hacks tenemos cosas como punteros estáticos. Estos son punteros que siempre apuntan a cierta cosa. La dirección a la que apunta un puntero estático suele ser dinámica y cambiará cada vez que cierre y vuelva a abrir su juego. En Assault Cube y la mayoría de los juegos no hay una dirección estática para nuestra salud y munición, por lo que tenemos que usar punteros de varios niveles para llegar a ella. Le mostraré cómo podemos llegar a nuestra dirección de salud y la lógica general detrás de ella.

En Assault Cube tenemos un puntero estático que apunta a la dirección base de nuestro jugador. Ese puntero estático es 509B74. Recuerde que esa no es la dirección base del jugador que señala a la dirección base de su jugador. También tenemos compensaciones como 0xF8 que es salud y 0x150 que es munición. 0xF8 y 0x150 se compensan con la dirección base de nuestro jugador. Cuando agregamos F8 a nuestra dirección base de jugador, obtenemos nuestra dirección de salud. Esto puede ser un poco confuso al principio, así que hice una imagen que muestra el concepto general. Esto es específico para encontrar la dirección de salud de tus jugadores en el cubo de asalto del juego.

1588292576559.png

El rojo son sus direcciones y compensaciones y las flechas verdes muestran el flujo lógico. Tenemos nuestra dirección estática 509B74. Esta dirección es un puntero y siempre apuntará a nuestra base de jugadores. Nuestra dirección base de jugadores es dinámica y siempre cambiará cada vez que el juego se cierre y luego se abra. Nuestra dirección de salud también es dinámica, pero la compensación de nuestra dirección de salud es siempre 0xF8. Entonces, ¿cómo llegaríamos a nuestra salud? Utilizando punteros multinivel. Primero escanearíamos nuestro puntero base de jugador. Tomaríamos la dirección que recibimos, que luego sería nuestra dirección base de jugador. Luego le agregaríamos nuestro desplazamiento F8. Esta nueva dirección, que es el producto de nuestra base de compensación y jugadores, es nuestra dirección de salud. Podríamos usar esta dirección para WPM y cambiar nuestro valor de salud o RPM y leer nuestro valor de salud. Así que veamos un código que llegaría a nuestra dirección de salud. Recuerda que este código no funcionará solo porque necesitamos un controlador para el juego. Esto es solo para mostrar el concepto general de punteros multinivel.

C++:
DWORD pLocalPlayer = 0x509B74;    //local player pointer
DWORD playerObjectAddress = 0x0;            //local player address
DWORD health = 0x0;                    //health address

ReadProcessMemory(hProcHandle, (LPCVOID)pLocalPlayer, &playerObjectAddress, sizeof(playerObjectAddress), NULL);    //scans for our local player address or player object address
health = playerObjectAddress + 0xF8;    //creates health address

El código que acaba de ver lee lo que está almacenado en pLocalPlayer, que es nuestro puntero a la dirección base de nuestro jugador. Luego almacena eso en playerObjectAddress, que es lo mismo que la dirección base de nuestro jugador. Luego agregamos nuestra base de jugadores y nuestra compensación de salud para obtener nuestra dirección de salud. Entonces podríamos hacer cosas como almacenar nuestro valor de salud en int healthValue y mostrarlo agregando este código.

C++:
int healthValue = 0;
ReadProcessMemory(hProcHandle, (LPCVOID)health, &healthValue, sizeof(healthValue), NULL);   //read health address and store results in healthValue
std::cout << "your health is: " << healthValue;

Algunas veces te encontrarás con múltiples compensaciones para llegar a la dirección que deseas. Puede encontrarlos usando la misma idea anterior. Utiliza su puntero estático para leer su base de jugadores. Luego agregas tu primer desplazamiento a tu base de jugadores. Si tiene más de un desplazamiento, RPM su primer desplazamiento y la dirección base de su jugador combinados. Debido a que esas dos cosas combinadas no son su dirección, son simplemente un puntero. Tendría que tomar lo que señala y agregar su segundo desplazamiento. No mostraré un ejemplo de esto porque primero debes entender cómo encontrar una dirección de desplazamiento y si entiendes eso, entenderás cómo encontrar punteros con múltiples compensaciones con mi simple explicación.

Esperaba que esto ayudara a los nuevos hackers a comprender la lógica detrás del uso de punteros estáticos para las direcciones y cómo usar las compensaciones. ¡Haré un tutorial sobre técnicas de organización en hacks externos y mostraré funciones útiles que puede usar para facilitar el escaneo de puntero multinivel! Si hay algún error, avíseme y lo solucionaré.

Creditos
wtlyons
 
  • Like
Reacciones : chiteroman