Novedades

Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!
  • Hola Invitado, 💸¡Gana dinero con GamerzHacking!💸 Estamos buscando creadores de contenido en Game Hacking y Piratería de Juegos. Haz clic AQUI para más información

[TUTORIAL] Pointers o Punteros en Cheat Engine

Zion

S. Moderador
Desde
9 Abr 2023
Mensajes
10
Asegúrese de comprender los tipos de valor o lea esto primero: [TUTORIAL] - Tipo de Valores en Cheat Engine

Los punteros son números enteros cuyo tamaño es el tamaño de la palabra base del proceso y almacenan una dirección en ese proceso. Es decir, en un proceso de 16 bits, un puntero es una WORD (16 bits), en un proceso de 32 bits, un puntero es una DWORD (32 bits) y en un proceso de 64 bits, un puntero es una QWORD (64 bits).

16 bits

WORD: int16/short

32 bits

DWORD: int32/int

64 bits

QWORD: int64/long

En los programas y la programación, simplemente usar solo números enteros y valores de punto flotante realmente no es factible con objetos complejos. Entonces, el concepto de un objeto en la memoria se vio como una necesidad. Aquí es donde entran los punteros. Simplemente apuntan a un objeto en la memoria, de ahí el nombre. Incluso las cadenas se implementan con punteros a la serie de caracteres en la memoria, aunque la mayoría de los lenguajes de alto nivel no lo advierten.

Objetos en la Memoria

Ahora digamos que tenemos un código que declara un objeto jugador y su configuración es así:
  • jugador : objeto
    • Nombre : cadena
    • Salud : entero
    • Monedas : entero
    • Coordenadas : objeto
      • X : float o decimal
      • Z : float o decimal
      • Y : float o decimal
    • Inventario : matriz o array : matriz de objetos de artículos, que tiene el artículo y el recuento de artículos.
Entonces, en un proceso de 32 bits en la memoria, el objeto del reproductor podría ensamblarse algo como esto:
  • Process.exe+123ABC : puntero : DWORD - Base de jugadores.
    • [Process.exe+123ABC]+10 : puntero : DWORD: puntero a donde se almacena la cadena de nombre en la memoria.
      • [[Process.exe+123ABC]+10]+4 : cadena : 256 bytes: el valor del nombre, como una cadena terminada en nulo (0x0).
    • [Process.exe+123ABC]+14 : entero : DWORD - Valor de salud.
    • [Process.exe+123ABC]+18 : entero : DWORD - Valor de monedas.
    • [Process.exe+123ABC]+1C : puntero : DWORD - Puntero a donde se almacena el objeto Coordenadas en la memoria.
      • [[Process.exe+123ABC]+1C]+10 : float : DWORD - Coordenada X.
      • [[Process.exe+123ABC]+1C]+14 : float : DWORD - Coordenada Z.
      • [[Process.exe+123ABC]+1C]+18 : float : DWORD - Coordenada Y.
    • [Process.exe+123ABC]+20 : puntero : DWORD - Puntero a donde comienza la matriz de inventario en la memoria.
      • [[Process.exe+123ABC]+20]+XX*4 : puntero : DWORD - Puntero al lugar donde se almacena en la memoria el elemento número XX de la matriz de inventario.
        • [[[Process.exe+123ABC]+20]+XX*4]+4 : integer : DWORD - El valor de conteo del artículo de inventario.
        • [[[Process.exe+123ABC]+20]+XX*4]+8 : puntero : DWORD - Puntero a donde se almacena el objeto del elemento en la memoria.
Y en un proceso de 64 bits en la memoria, el objeto del reproductor podría ensamblarse algo como esto:
  • Process.exe+123ABC : puntero : QWORD - Base de jugadores.
    • [Process.exe+123ABC]+10 : puntero : QWORD - Puntero a donde se almacena la cadena Nombre en la memoria.
      • [[Process.exe+123ABC]+10]+8 : cadena : 256 bytes: el valor del nombre, como una cadena terminada en nulo (0x0).
    • [Process.exe+123ABC]+18 : entero : DWORD - Valor de salud.
    • [Process.exe+123ABC]+1C : entero : DWORD: valor de las monedas.
    • [Process.exe+123ABC]+20 : puntero : QWORD - Puntero a donde se almacena el objeto Coordenadas en la memoria.
      • [[Process.exe+123ABC]+20]+10 : float : DWORD - Coordenada X.
      • [[Process.exe+123ABC]+20]+14 : float : DWORD - Coordenada Z.
      • [[Process.exe+123ABC]+20]+18 : flotante : DWORD - Coordenada Y.
    • [Process.exe+123ABC]+28 : puntero : QWORD - Puntero a donde comienza la matriz de inventario en la memoria.
      • [[Process.exe+123ABC]+28]+XX*8 : puntero : QWORD - Puntero al lugar en el que se almacena en la memoria el elemento número XX de la matriz de inventario.
        • [[[Process.exe+123ABC]+28]+XX*8]+4 : integer : DWORD - El valor de conteo del artículo de inventario.
        • [[[Process.exe+123ABC]+28]+XX*8]+8 : puntero : DWORD - Puntero a donde se almacena el objeto del elemento en la memoria.
Pero si tuviéramos un objeto Player que contiene un objeto Actor, podría ensamblarse algo como esto en un proceso de 32 bits:
  • Process.exe+123ABC : puntero : DWORD - Base de jugadores.
    • [Process.exe+123ABC]+4 : puntero : DWORD - Base de actores.
      • [[Process.exe+123ABC]+4]+10 : puntero : DWORD - Puntero a donde se almacena la cadena Nombre en la memoria.
        • [[[Process.exe+123ABC]+4]+10]+4 : string : 256 bytes - El valor del nombre, como una cadena terminada en nulo (0x0).
      • [[Process.exe+123ABC]+4]+14 : entero : DWORD - Valor de salud.
      • [[Process.exe+123ABC]+4]+18 : entero : DWORD - Valor de monedas.
      • ...
Y cuanto más compleja es la estructura del objeto, más compleja es la estructura del puntero.
 
Atrás
Arriba