Ok, long story short - I'm just trying to write a small C# program that accesses my *********** MMORPG game memory to display detailed statistics of what's happening in the world around me. It's a just-for-fun type project.
1. I ran "The Game".
2. Loaded up CheatEngine and attached to the process.
3. Looked at my XP bar, search for that number in CE. Came up with a bunch of different results.
4. I gained some XP, re-searched and narrowed it down to 2 addresses.
a. 0x0237D808 (a green number, static according to CE). (Actually GameClient.exe+0237D80
b. 0x241A41A4 (possibly a pointer)
5. I did the same scan for character name and came up with the two following addresses:
a. 0x023773C4
b. 0x0245D408
neither of which showed green (static).
So I quickly threw together some code to display my character name and current XP in a small window.
Worked GREAT! Until I reloaded the game. I double checked with CE just by re-attaching to the process
and the *values* it was displaying were still correct, but the address had changed slightly.
Now the XP was at 0x02B6D808 and the name was at 0x02B673C4. Note, only the first 4 of the address
changed, the last 4 are still the same. CheatEngine was able to track this change somehow, and for
some reason my software didn't.
I browsed to that memory area, did a structure scan an noticed that at 0 offset was my current XP, and at 4 offset was my max XP for this level.
And at 18 offset there is a pointer, everything else in this area is 0's.
If I follow the pointers down at offset 18, I eventually find something that looks like my x/y/z location, which looks promising I suppose, I'm just curious as to why the first 4 bytes keep changing and how to narrow that down. Perhaps I'm looking at the wrong location? I thought static locations were static...
What am I missing here? I do I figure out a way to consistently access the same memory area?