Qué aprenderás
Punteros:
En esta entrada, voy a hacer una breve introducción a los punteros, para así poder avanzar en los tutoriales de Cheat Engine sobre punteros para aquellos que lo quieran comprar.
Empecemos:
¿Qué es un puntero?
Un puntero, como veremos en el Cheat Engine, es una dirección de memoria, cuyo valor es otra dirección de memoria.
De esta manera, podremos acceder al valor de la dirección a la que apunta nuestra dirección de memoria (variable).
Para explicar esto con más detalle:
Dirección Valor
009733D8 (puntero) -->009733E8
009733E8 --> 102
Lo primero, es marcar la casilla que pone "Pointer".
En la caja de texto de la parte inferior, ponemos la dirección inicial, generalmente, una dirección cuyo valor estamos seguros de que no cambiará, de que lo que cambiará será lo que apunta.
A la derecha de la dirección, veremos su valor. Si es un puntero, su valor será una dirección.
Arriba tenemos para colocar Offsets. Los offsets son valores que se le sumarán a la dirección. Esto cuando el puntero apunta directamente a la dirección que contiene el valor que deseamos, no nos interesa. En cambio, si hacemos una cadena de punteros, será muy importante.
Para hacernos una idea de los punteros, veremos un par de ejemplos, con la sintaxis de algún lenguaje de programación:
C++
En C++, las variables se definen de esta forma:
<tipo> <nombre> [= <valor>];
Ej:
int var;
("int" declara un número entero)
Para definir un puntero, basta poner un '*' después del tipo (o antes del nombre):
Ej:
int* ptr;
Para ver la dirección de memoria de una variable, se usa '&', en lugar del '*':
Ej:
int var = 66; // El valor de "var" es 66.
int *ptr; // Declaramos el puntero "ptr".
ptr = &var; // El valor de "ptr" será la dirección de "var".
Tal como lo tenemos:
Si accedemos al valor de "ptr", veremos la dirección de "var".
En cambio, si accedemos al valor de "ptr" como puntero (*ptr), veremos el valor de "var".