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 


Help with finding multi level pointer (GTA V)

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
athlonaces
Newbie cheater
Reputation: 0

Joined: 18 Feb 2008
Posts: 21

PostPosted: Wed Apr 22, 2015 6:36 pm    Post subject: Help with finding multi level pointer (GTA V) Reply with quote

Hi, I am trying to learn how to use a cheat engine and am trying it out with GTA V. (I understand that there are trainers out there but I am more interested in learning how to use it)

I managed to find the address that modifies the wanted level (dynamic) and I want to locate the base address for it.

I took the following step.

1) Right click address that modifies wanted level, click "Find out what writes to this address".

2) Found a single code in the debugger, debugger provided a pointer address.

3) Searched in new scan (hex mode) of the pointer address.

4) Found a single address, manually added a new pointer address with the offset included in the previous instruction. This new address successfully identifies the current wanted level value.

5) Right click this pointer address, click "Find out what access this address".

This is where a multitude of issues occur. Its either I get 0 results in finding what access this address, or I get multiple results all pointing to a single address which cannot be found in a new hex scan.

I have been using a 4 byte scan (tried using all values but the 4 byte result is the only one that modifies the wanted level).


Can anyone point out whats wrong here? Do I have to use pointer scanner in this situation? I am kinda hesitant and will want to learn how to find multi level pointers without a pointer scanner.


PS I have completed the cheat engine tutorial that teaches multi level pointer. The steps doesnt work in this case.


Will appreciate any help. Thanks in advance.

Cheers.
Back to top
View user's profile Send private message
Zanzer
I post too much
Reputation: 126

Joined: 09 Jun 2013
Posts: 3278

PostPosted: Wed Apr 22, 2015 9:10 pm    Post subject: Reply with quote

You should use Find out what accesses this address (not writes to).

Also, most times you won't find anything that accesses the base address. The debugger only triggers when something directly access the value at that address, not when one of the registers equals that value. For instance, if the following instruction retrieved the base address you found into register RCX, the debugger would not notify you.
mov rcx,[eax+10].

It can be tedious, but you would need to trace the instructions backwards to find each offset along the way until you finally get to a static address. So if your address was as [eax+10], go back through the code and find out what set the value of EAX. etc.

The automated pointer scanner finds value by looking for any address that contains the value within a range around the base address you just found. It continues to do this until it reaches a static address.

So to manually find your pointer using the memory scan, you shouldn't search for what addresses contain the exact base address. You should search for a value between your address and minus 256 (or some other made up number). The automated scanner is easier. Smile
Back to top
View user's profile Send private message
athlonaces
Newbie cheater
Reputation: 0

Joined: 18 Feb 2008
Posts: 21

PostPosted: Wed Apr 22, 2015 9:49 pm    Post subject: Reply with quote

Zanzer wrote:
You should use Find out what accesses this address (not writes to).

Also, most times you won't find anything that accesses the base address. The debugger only triggers when something directly access the value at that address, not when one of the registers equals that value. For instance, if the following instruction retrieved the base address you found into register RCX, the debugger would not notify you.
mov rcx,[eax+10].

It can be tedious, but you would need to trace the instructions backwards to find each offset along the way until you finally get to a static address. So if your address was as [eax+10], go back through the code and find out what set the value of EAX. etc.

The automated pointer scanner finds value by looking for any address that contains the value within a range around the base address you just found. It continues to do this until it reaches a static address.

So to manually find your pointer using the memory scan, you shouldn't search for what addresses contain the exact base address. You should search for a value between your address and minus 256 (or some other made up number). The automated scanner is easier. Smile


Thanks for the speedy reply!

Oh I am supposed to use access and not write to eh... I was following the tutorial's step (which uses writes to for the first dynamic address that allows you to modify the value) and use access on the subsequent attempts. Can you explain why was these steps implemented in the tutorial?

Ah I get the part where you explained why the debugger might not notify me, that's interesting, I'll keep that in mind.

For your last point, lets say I found the address that modifies my value to be "F7944AA5F8". I should modify my search to look between "F7744AA5F8" and "F7944AA5F8", with unknown initial values and all types of addresses, repeating the process of increased value/decreased value until I get another address?

I don't get how that will derive a pointer address though!

I'll try using the pointer scan, but currently more interested in how this manual tracing method works. You really helped out a lot. Much appreciated!
Back to top
View user's profile Send private message
Zanzer
I post too much
Reputation: 126

Joined: 09 Jun 2013
Posts: 3278

PostPosted: Thu Apr 23, 2015 12:28 pm    Post subject: Reply with quote

You mentioned you weren't finding any results, so you should then use "access" instead of "writes".

If the address you found is "F7944AA5F8", the default pointer scanner would then do an 8-byte scan for all addresses between "F7944A9DF8" (-2048) and "F7944A9DF8" (+2048). Of those results found, it would then do another +/- 2048 search between each of those addresses. It would do that to a max level of 5 or until it found a static game pointer. That would be the same manual process you need to do if you're going to use the memory scan method.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine 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