I'm quite new to reverse engineering and I'm currently trying things out on a game called Assault Cube. What I've done so far is finding offsets to my players health, ammo, name, etc.. When doing so I've ended up with getting 3 different base addresses looking as follows:

ac_client.exe+109B74
ac_client.exe+10F4F4
ac_client.exe+11E20C

But I'm wondering how it comes that there are three different base addresses that all lead to my players health when adding the offset 0xF8 for example? I've tried to google it but couldn't find any answer to my question.

  • Well, this question lacks a bit of detail. Of course several pointers to the same address could exist and at that pointed-to address a single value would be kept. What exactly is your question, though? Or are you saying that at each of these above addresses the same value is kept respectively? – 0xC0000022L Aug 14 at 13:34

In the case you've outlined where the same offset from multiple static addresses modifies the same value, that lets you know that those addresses all lead to the same structure.

You're trying to understand why that's the case when it seems like there should only be one static address ultimately housing a value, right? That's a completely understandable question.

In Cheat Engine, you could look for instructions that access each of those addresses to see if there are differing instructions with any of them. If so, that lets you know that the values in those addresses are being used for different things in the game. Two examples:

  • Anti-cheat (Where perhaps the same value is written to multiple addresses so as to return false-positives, or the same value has to reside in multiple addresses, else the game crashes, etc.).
  • The more likely scenario with a game like AC, one of those addresses has to do with actual health, the second one deals with the health value you see on the screen, and the third being stored for somewhere else, like maybe buried in a stats menu that also shows your health.
  • Many other possible scenarios that may or may not make sense to you.

Now, if the instructions you see are the exact same for each address and you trace them all back to a single point where you can't find any differentiation, then you may ultimately be left with not knowing exactly how or why a game reads/writes certain values the way it does. It could be bad optimization from whatever engine was used, or maybe functionality that would have served another purpose, but doesn't, though the values are still written/read as if it was.

Finally, a static address can also be viewed as a permanent location where the game will always read from/write to for whatever reason. It's up to you reversing the game to determine what those reasons are (as much as you can, of which as you continue to hack games, you'll understand more and more which of a myriad of reasons there could be).

Overall, there are a lot of reasons for multiple static addresses that can all affect the same value in some way!

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.