Posted: Sun Sep 06, 2020 2:09 pm Post subject: Can't find the pointer to an entity list
Hello, let me start by saying I did a lot of "googling". Followed each advice I found but couldn't find the pointer I need.
What I want?
1. Find the pointer to each entity, in order to do this I need to find the pointer to the list and then iterate each pointer it contains.
2. Be able to read each entity's properties (position, health, name, id, etc.). In order to do this I need to do 1. first.
What I have
1. Pointers to 3 entities' positions. All these pointers point to the X coordinate of a different entity. These pointers are valid everytime I close and open the game so they are ok.
2. Pointers to the list length (entity amount).
What I tried
I tried to see if the distance between each entity is the same, on some cases this distance is always 0x810 but on some other cases this distance varies a lot and I can't go from 1 entity to another by adding 0x810.
Tried finding a common pointer with an offset of 4 or 8, like for example:
CC -> 8E -> 4 = Entity1
CC -> 8E -> 8 = Entity2
But couldn't find any.
I found something that confused me even more:
I have a pointer like this:
CC -> 194 -> 4 -> 0 -> 0 -> 14
That points to entity1's position
If I add 4 on one of the zeroes I get this pointer:
CC -> 194 -> 4 -> 4 -> 0 -> 14
And this one points to another entity's positon.
If I add 4 on the other zero I get this pointer:
CC -> 194 -> 4 -> 4 -> 4 -> 14
And this one points to another entity's positon.
But if I add 4 to one of the pointers that had a 4 I get an invalid pointer.
From the examples I used to learn, everytime I added 4 to one of the offsets I moved to the next entity. But this doesn't seem to apply here.
It might not be an array. Perhaps it's a linked list or some tree (perhaps even a hash table).
That's what I'm afraid of, I have 0 knowledge trying to find a linked list or something else.
Do you have any recommendation for this case? Like I'm able to find all the entities by searching them manually but I can't find a way to automate. I need to be able to monitor the values on all entities with my software.
If you're trying to rebuild a machine from individual parts, it's a good idea to know what the machine is and how it works before trying.
Take a class on data structures or find the information yourself (e.g. youtube / wikipedia). Then look at how data structures are actually implemented in a low level language like C/C++. It'll be far easier to spot them after that.
Alternatively, look at the topmost common node (i.e. CC -> 194 -> 4) in the structure dissector and recursively examine pointers until you figure out a pattern. _________________
I don't know where I'm going, but I'll figure it out when I get there.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum