| View previous topic :: View next topic |
| Author |
Message |
mouser Advanced Cheater
Reputation: 0
Joined: 08 Mar 2015 Posts: 50
|
Posted: Mon May 04, 2015 3:25 pm Post subject: Pointers change in between levels |
|
|
Finally came back around experimenting more with cheat engine and Oddworld New N Tasty.
I thought I was ready to go, having set up pointers and scripts for camera manipulation. Rocksolid pointers as far as I can tell.
So I progressed through the first level and at a certain point when I step through a certain door, all values disappear, question marks everywhere and pointers useless.
I quit and restart the game from the beginning, pointers are back, I progress to that point again... gone.
So I do the same work again, pointerscanning for my camera addresses, restarting the game a couple of times. Now I have a rock solid pointer for that section of the level. One for the first section and one for the next... now this will get messy if it keeps changing every 10 minutes playing the game. Every area could have it's own unique pointers. Can't do pointerscans for all these different areas.
I'm thinking about a method that would spare me the work. I have a script with mono descriptions of addresses that are writing to these pointers. The addresses of these descriptions are not changing when the pointers change. I checked this by finding out what writes to the new pointers, it's exactly the same that writes to the old pointers.
I maybe stop makins sense at this point?
So, AOB scanning pointers. I somehow don't think this will work here? Before I go and try that I want to know what you people think about this. If you have pointers that change every other area/level, what's the best solution to that? Is there an easy way or am I doomed in rescanning every section?
|
|
| Back to top |
|
 |
Fresco Grandmaster Cheater
Reputation: 4
Joined: 07 Nov 2010 Posts: 600
|
Posted: Mon May 04, 2015 3:53 pm Post subject: |
|
|
Do the addresses change too?
Or it's just that the pointers that stop pointing at the correct address ?
For example:
If 0x00abcdff is the address of camera x, after the pointers stop working, is 0x00abcdff still the address of camera x or does it change?
If not, just do a code injection at that point in the code where the address gets accessed and calculate the pointer trough assembly, after that if the pointer is valid store it's value under a registered symbol label.
add the label to the table.
_________________
... Fresco |
|
| Back to top |
|
 |
mouser Advanced Cheater
Reputation: 0
Joined: 08 Mar 2015 Posts: 50
|
Posted: Mon May 04, 2015 4:07 pm Post subject: |
|
|
It's completely different I think.
Beginning of the game:
Camera X:
| Code: | | "NNT.exe"+009E1EEC = 0403806C |
Further down the level Camera X turns into:
| Code: | | "NNT.exe"+009E1F3C = 302297A8 |
The only part that is the same is the Instruction that writes to these adresses.
- A second try:
copy and pastet the pointers into notepad++
This
| Code: | | RealAddress="1997BEE0" |
becomes
| Code: | | RealAddress="19539D48" |
|
|
| Back to top |
|
 |
Fresco Grandmaster Cheater
Reputation: 4
Joined: 07 Nov 2010 Posts: 600
|
Posted: Mon May 04, 2015 4:25 pm Post subject: |
|
|
Then your only bet or hope is that the code that writes to camera x only writes to one address ( i.e. camera x ). However if the code writes to more than one addresses you will have to dissect data/structures and find a way to distinguish between the camera x you want and other camera x's.
_________________
... Fresco |
|
| Back to top |
|
 |
Rissorr Master Cheater
Reputation: 3
Joined: 17 Sep 2013 Posts: 273 Location: Israel!
|
Posted: Mon May 04, 2015 6:15 pm Post subject: |
|
|
| Try to fetch base address from any code that accesses only to yours camera
|
|
| Back to top |
|
 |
mouser Advanced Cheater
Reputation: 0
Joined: 08 Mar 2015 Posts: 50
|
Posted: Tue May 05, 2015 7:28 am Post subject: |
|
|
| DogeMan wrote: | | Try to fetch base address from any code that accesses only to yours camera |
Forgive my ignorance, but what would that be good for? You mean checking what accesses the camera, finding the base addresses of that? (I'm lacking imagination a lot of times;)
|
|
| Back to top |
|
 |
Fresco Grandmaster Cheater
Reputation: 4
Joined: 07 Nov 2010 Posts: 600
|
Posted: Tue May 05, 2015 7:47 am Post subject: |
|
|
codes that access/write look like this [base+offset] ( [register+offset] e.g. [eax+8] )
reg (register) is the base address of a structure, off (offset) a number that you add to the base. base+off = camera address.
now, there may be only one code that write to all [reg+off]'s (i.e. camera) but there may be only a specific code that only writes to one reg ( i.e. a code that only writes to the base address of the camera you're interested in )
which means that if you find said code, you then can be able to distinguish between the many cameras just by injecting at the place where the code read only from the base of the camera you're interested in, then you can add to that base the offset and find the camera.
e.g. [eax+4] < one code writes to 20 addresses.
[eax] < one code accesses only 1 address.
you then inject at [eax] and then add 4 to eax to find the 1 address in the 20 you're interested in.
Some developers do that. they have methods like "getPlayerCameraBase()"
and" getObjectCameraBase( Object o )"
The one with the parameter "Object o" writes to all 20 camera while the one specific for the player only writes/reads to the player camera.
It looks like your game uses the parameter one.
_________________
... Fresco |
|
| Back to top |
|
 |
|