Accediendo a direcciones de memoria directa y obteniendo los valores en C ++

Me preguntaba si era posible acceder a un bloque directo de memoria usando C / C ++ y tomar el valor. Por ejemplo

int i = 15;
int *p = &i;
cout << &i;

Si tomé el valor impreso aquí, eso me daría la dirección de la variable i, que contiene el valor 15. Solo diré que imprimió 0x0ff9c1 para este ejemplo. Si tengo un programa separado que declara un puntero como este ...

int *p = 0x0ff9c1;
cout << *p;

¿Sería posible imprimir ese 15 que la otra aplicación colocó en el bloque de memoria 0x0ff9c1? Sé que mi declaración de puntero con la dirección de memoria es incorrecta, de lo contrario no estoy seguro de cómo hacerlo. He intentado usarmemcopy pero tampoco he podido hacer que eso funcione. Sé que esto es posible de alguna manera, ya que tengo un programa llamado Cheat Engine que modifica los valores de la dirección de memoria del juego para obtener ventajas injustas. He tenido éxito al colocar la ubicación de la memoria impresa y obtener el valor (15) a través de Cheat Engine. Mi objetivo es hacer esto usando C ++. Si esto es demasiado confuso, básicamente me gustaría acceder a una variable que otra aplicación almacenó utilizando su dirección de memoria e imprimir el valor. Estoy usando Windows 7 x64 con el compilador MinGW si eso es importante. ¡Gracias

PS: Publicaré una foto de lo que hace Cheat Engine para dar una mejor idea. @

Respuestas a la pregunta(5)

Su respuesta a la pregunta