Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Finding pointer with multiple address

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Discussions
View previous topic :: View next topic  
Author Message
Vman11120
How do I cheat?
Reputation: 0

Joined: 23 Dec 2023
Posts: 3

PostPosted: Sat Dec 23, 2023 10:20 am    Post subject: Finding pointer with multiple address Reply with quote

Hi I just started with cheat engine I did the tutorial on how to find pointers manually and it was pretty straight forward. When I was trying same method for tekken I was getting something like this "mov [rdx+rcx+10],r8d" where it has both rdx and rcx and an offset.

So my question is how do I find the pointer for this?
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 140

Joined: 06 Jul 2014
Posts: 4307

PostPosted: Sat Dec 23, 2023 1:09 pm    Post subject: Reply with quote

One of them is probably significantly smaller than the other. The smaller one is part of the offset (don't forget the `+10`) and the larger one is the base address.

You can try the pointer scanner:
https://www.youtube.com/watch?v=3dyIrcx8Z8g

If you're running the game on an emulator, you might have a bad time. The pointer scanner would need a very big max offset corresponding to the emulated architecture's memory size (e.g. original playstation = 2 MiB), and even then it might not work depending on how close the emulator is to the original architecture.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Vman11120
How do I cheat?
Reputation: 0

Joined: 23 Dec 2023
Posts: 3

PostPosted: Sat Dec 23, 2023 2:04 pm    Post subject: Reply with quote

I attached result im getting. So in this example im assuming 84 is the offset and 22EC1770000 is the base address?

In that case how will calculate the offset do I use the programming calculator to calculate both like 84 hex would be 132 so 132+10 = 142 being the offset?

Im not trying it on an emulator im actually trying it on TEKKEN demo. Trying to find value for player 2 so I can change the character for him.

I tried the pointer scanner method and its just giving me no values. Its working for player 1 but player 2 is not for some reason.



Capture.PNG
 Description:
 Filesize:  32.17 KB
 Viewed:  1941 Time(s)

Capture.PNG


Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 140

Joined: 06 Jul 2014
Posts: 4307

PostPosted: Sat Dec 23, 2023 2:59 pm    Post subject: Reply with quote

Use hexadecimal for addresses and offsets.
The base address is probably 22EC1770000 as CE says. The offset would be the address being accessed (i.e. 22EC177094) minus the base address, or 94. This corresponds to rdx (84) + 10 too.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Vman11120
How do I cheat?
Reputation: 0

Joined: 23 Dec 2023
Posts: 3

PostPosted: Sun Dec 24, 2023 2:11 am    Post subject: Reply with quote

Thanks to you managed to get first pointer working! Very Happy

Although I reached a dead end at the 3rd lvl pointer. What I noticed is when checking for base addresses it is always pointing to previous address but the cheat engine guess gives me "correct" one I have attached an example from pointer 1 debug. So im not sure if this is the correct approach or not. If I follow the cheat engine guess I cant get past 3rd pointer because its showing no addresses are found when I try to search.

I have a working version for player 1 (got from internet) that I want to make it work for player 2 so im trying to reverse engineer player 1 to test but also getting stuck at the same place although pointers/offsets are the same until I reach the dead end.



Pointer1 Debug.PNG
 Description:
 Filesize:  34.51 KB
 Viewed:  1902 Time(s)

Pointer1 Debug.PNG


Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 140

Joined: 06 Jul 2014
Posts: 4307

PostPosted: Sun Dec 24, 2023 1:40 pm    Post subject: Reply with quote

See the text at the bottom that says "The registers shown here are AFTER the instruction has been executed"

The instruction `mov rax,[rax+08]` reads the 8-byte pointer value at `rax+08` and writes it to `rax`. Logically, the value of rax shown in the window is not the same value rax had before the instruction was executed.
Code:
mov rax,[rax+08]
     ^    ^
     |    |
     |    unknown
     |
216F9930000

However, since you know the instruction accessed the address 217061E3C08, it's not hard to figure out with very basic algebra.
Code:
rax + 08 = 217061E3C08
rax = 217061E3C08 - 8
rax = 217061E3C00
This is where CE gets its guess from.
_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Discussions All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites