|Search for Pointers. Example of "Warcraft 3"|
You can use it if you have found some valid addresses and after restart they are not valid. Find the pointer and addresses always will be valid! The program has 3 different methods to search for pointers, including scanner for Pointer-to-Pointer structure up to 5 level (2 level for SE edition).
Addresses change every time after the restart of the game. But the game has to know where the value is now. The game has a special pointer to this address. The pointer contains the address of the value.
Address of the pointer does not change when the game is restarted. If the address stored in the table is a pointer, then we can get the real addresses of the values by following the pointer, even after restarting the game. We recommend to scan only static and even addresses (Search with "Scan only static addresses" option). Static pointers works on all computers. Select the cell with Experience, then use "Search the pointer to this address". After that click "Set the pointer to all" or "to group".
Oops, we found nothing. That is because in this game, the pointer contains the "address of the structure", but we do not know where that structure begins. Select the cell with Experience again. Use the command "Search the pointer with max available offset".
We found all the pointers between the beginning of the block and the address with Experience. There are 50 pointers.
Restart the game. Click "Filter" and enter the value of Experience - "650". Click "OK".
If there is more than one result after filtration, restart the game and repeat filtrations ("Pointer filtration"). Filter until the number of pointers will not decrease, select the cell in the right table with value 650, and use "Set the pointer to all".
Cool, it works! Now, this table work 100% of the time with any restart.
Pointer 6F71C7B8 contains address 01170088.
Address 01170088 is the address of the structure of our hero.
Address 01170088 plus offset 1684 equal 0117071C is the address of experience.
Address of experience is 1684 from the structure from pointer 6F71C7B8.
As a result, we have this table:
Pointer 6F71C7B8 + 1684 / Experience
Pointer 6F71C7B8 + 1688 / Points
Pointer 6F71C7B8 + 1692 / Power
Pointer 6F71C7B8 + 1712 / Dexterity
Pointer 6F71C7B8 + 1712 / Health
Pointer 6F71C7B8 + 1744 / Mana
If you does not find a pointer then try to search for "Pointer to pointer" structure. At first, search for pointer 2 level, if not find, then pointer 3 level. Each next level is searched in 10 times slower than previous level. If you have 1 minute for pointer 2 level, then time for 3 level will be 10 minutes, for 4 level will be 100 minutes. We recommend to decrease maximum offset to 500-1000 bytes for pointer 4-5 level.