Code:
char *hp = (char*)0xDEADBEEF;
Das wäre ein Pointer auf die absolute Speicheradresse 0xDEADBEEF, wobei diese Zahl relativ zu deinem (d.h. für deine Anwendung) allokierten virtuellen Speicher ist. Willst du auf fremden Speicher zugreifen geht nichts ohne WriteProcessMemory().
Edit: Das ist natürlich kein Array sondern eine struct.
Ein Array sieht im Speicher nicht anders aus, als einfach aneinandergereihte Bytes (wenn es ein char-Array ist). So gesehen ist ein struct das Gleiche. Die Elemente sind einfach hintereinander im Speicher. Es gibt hier allerdings einige Probleme, die ich nicht mehr genau kenne. So dürfen ints glaube ich nur an geraden oder durch 4 teilbaren Offsets liegen. Das heißt effektiv, dass der Compiler mit Nullbytes padded, sofern das nicht gegeben ist!
Du hast ein struct am Offest 0x00.
Das sieht so aus
Code:
struct player
{
char HP;
char MP;
int XP;
char level;
};
Dann wäre der Offest von HP = Arrayoffset = 0x00
MP wäre an Offset+1 (1 Byte) -> 0x01
XP wäre Offset+2 (2 Bytes weiter) -> 0x02
Level wäre Offset+6 (XP ist 4 Byte weil int) -> 0x06