
Originally Posted by
R3DDOT
Once you find a valid pointer, for each gun you pick, the pointer will point to a different address.
And since in pointers you don't read the last offset, you just add it to the pointer, you can just add 1B to the last offset, and it will give you the superweapons pointer. Think of it like this: You got a valid ammo pointer okay? It always points to ammo, regardless of what weapon you are carrying. Since Superweapons address is always 1B more than the ammo address, if you add 1B to the last offset, it will point to the Super-Weapons Pointer, because as I said earlier, the last offset is only added to the pointer.
Take a look at this example(this is not a valid pointer though):
Base Address = 509B74
Offset(s): 36C,40,10
The pointers works like this:
-First, you read the base pointer (509B74 -> 413DA3).
-Then, to the address 413DA3, you add the first offset, and then you read it again(413DA3 + 36C = 41410F; 41410F -> 2ABE51). It repeats this process until you only have one more offset(If in any of the steps above, it pointed to 0, then it's an invalid pointer).
-Then, when you only have one more offset, it only adds it to the pointer(548BA34 + 10 = 548BA44 « This is the address that it points to).
I actually got my own function which reads a pointer. I provide with the offsets and the base address, and it gives me the address. It's simple as that.
I get what you mean. That is easy to understand. Thank you. I hope I am not hijacking the thread, as it would also help the OP. But if I should create a new thread, mods please let me know.
1. So the ammo address you get by searching bytes of ammos would be "548BA44" in your example? Now I need to find the base address. To do this, I use the pointer scanner. I would search for the address 548BA44, then once that search is done, I would quit game, restart the game with the same settings, and find the ammo address of the exact same gun, lets say 599DA21. Now I "rescan" using this address. I continue until I get small enough results. However, if I set a region of memory to the read/write address of AVA (400000~1F90000), search the first address of the ammo, 548BA44, it doesn't give me anything. I also tried searching for bullet numbers in temple within these memory regions. I picked up the shotgun, searched for the value "8", then secondary, rescanned for "1". I get results by searching "8", but if i rescan for 1, it shows 0 results. So obviously I am not doing it right.
If I search for the entire region, CE crashes due to too many results. That's where I am stuck.
2. I understand about the offsets. But how would adding 1B offset to the ammo pointer give you the superweapons pointer? Isn't this because you know from the data/structure dissect that you know where the superweapons pointer is relative to the ammo pointer?
3. So from what I understand about the ammo base pointer, it seems like AVA has one base pointer and it adds offsets to create a new memory address for each gun? Is this true? So once you have the base address, you would have ammo pointer for every gun?