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 


Some of the game's values are too sneaky for pointerscans?

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
Paprikaskrumpli
Cheater
Reputation: 0

Joined: 19 Dec 2020
Posts: 29

PostPosted: Thu Dec 24, 2020 9:21 am    Post subject: Some of the game's values are too sneaky for pointerscans? Reply with quote

Some things to know, I'll try to keep this short:

-I frequently use this technique, with success most of the time (I find results)
-When I get no results, I increase the structure size and level gradually (Usually is solves the "no result" problem)
-I always can find the correct value I'm looking for (before the pointer scan, I'm 100% sure It is the same value I've found before restarting the game)

Problem:
I've come across some values that I don't seem to find pointer paths to, even with high settings like: 8192 structure size, 9/10 level, and 3 limited offsets per node (rest are default)

Questions:
1) Is scanning with multiple pointermaps reliable, or

should I do it like this:
-pointer scan to a value
-get 100K-Couple Million of results
-restart game, find value, rescan memory, and gradually decrease the
number of results

or, both of them (I usually get less results with multiple pointer maps, and then start manually rescan memory, with the above technique)

2) What setting would you recommend for sneaky pointerpaths?

3) What setting would you recommend in general?

4) Is there a way to determine which module (dll/exe) a value is located
before a pointer scan (In order to find It more easily after a restart, or
limit the pointer scan to a given dll/exe?

5) What is "Lowest known path: " in the pointerscan window?

6) What is "Time spent writing" in the same window?

7) What is "Unique pointervalues in target" in the same window?

8) When I do "Pointer scan for this address", does CE do something like a "manual pointer scan"? What I mean by that is this:
-Find the value you are looking for
-Find out what accesses this address
-Subtract offset from address
-What points to a new address
-Repeat same process to these pointers

I'd like to learn as much as I can, so send me wall of texts please :D!
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 471

Joined: 09 May 2003
Posts: 25859
Location: The netherlands

PostPosted: Thu Dec 24, 2020 10:51 am    Post subject: Reply with quote

some values can not be found as they use variable unsexes instead of pointers (e.g maps, lists, arrays)

as for the questions:
1: yes
it's recommended to use the smallest map as base and the others as compare maps. It's doing a rescan for every result on each compare map, so only those that match all maps are left and get written to disk saving a lot of time writing to disk and reading it out later on rescans

2: offset 10000 level 10 max node of 3 or 2

3: offset 3128 level 7 max node 3 or 4

4: doesn't matter one bit. The base address is the last thing looked at when doing a pointerscan

5: Just some debug info that can give a slight idea of how long it may take. If all the fields contain the maximum offset you're at the end. Of course, many fields will be skipped as not every address os a pointer or what's currently looked for. But at least it's something tonshow it's 'doing something'

6: to show you how much time you have wasted by not using pointermaps

7: the number of unique pointers in the pointermap. The lower the shorter the scan will likely take (less branches to follow)

8: no for the debugging. that is up to you. (too many things can branch of there)
but you can input information like :ends with offsets and fill in what you found. it will speed up the scan as it will have less levels to go through

_________________
Do not ask me about online cheats. I don't know any and wont help finding them.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
Paprikaskrumpli
Cheater
Reputation: 0

Joined: 19 Dec 2020
Posts: 29

PostPosted: Thu Dec 24, 2020 12:29 pm    Post subject: Reply with quote

Dark Byte wrote:
some values can not be found as they use variable unsexes instead of pointers (e.g maps, lists, arrays)

as for the questions:
1: yes
it's recommended to use the smallest map as base and the others as compare maps. It's doing a rescan for every result on each compare map, so only those that match all maps are left and get written to disk saving a lot of time writing to disk and reading it out later on rescans

2: offset 10000 level 10 max node of 3 or 2

3: offset 3128 level 7 max node 3 or 4

4: doesn't matter one bit. The base address is the last thing looked at when doing a pointerscan

5: Just some debug info that can give a slight idea of how long it may take. If all the fields contain the maximum offset you're at the end. Of course, many fields will be skipped as not every address os a pointer or what's currently looked for. But at least it's something tonshow it's 'doing something'

6: to show you how much time you have wasted by not using pointermaps

7: the number of unique pointers in the pointermap. The lower the shorter the scan will likely take (less branches to follow)

8: no for the debugging. that is up to you. (too many things can branch of there)
but you can input information like :ends with offsets and fill in what you found. it will speed up the scan as it will have less levels to go through


Thank you for your answer, very helpful!

Could you elaborate further on your first statement?
Dark Byte wrote:
some values can not be found as they use variable unsexes instead of pointers (e.g maps, lists, arrays)
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 471

Joined: 09 May 2003
Posts: 25859
Location: The netherlands

PostPosted: Thu Dec 24, 2020 12:35 pm    Post subject: Reply with quote

still on my phone so there are typos

"variable indexes "

e.g an array of objects may get their order randomized due to harddiskspeed and threading.
the pointerscan does not handle indexes into arrays only pointers to objects

_________________
Do not ask me about online cheats. I don't know any and wont help finding them.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
Paprikaskrumpli
Cheater
Reputation: 0

Joined: 19 Dec 2020
Posts: 29

PostPosted: Thu Dec 24, 2020 12:47 pm    Post subject: Reply with quote

Dark Byte wrote:
still on my phone so there are typos

"variable indexes "

e.g an array of objects may get their order randomized due to harddiskspeed and threading.
the pointerscan does not handle indexes into arrays only pointers to objects


Very interesting. Here is my problem: I have a value, on a given address. I can always find it after a restart. Tried pointerscanning it, with no results.
Then I said: Okay, I'll take a look how the game accesses it. Here's what I've found:

-What accesses this addres: find one offset, for example: 0x30 (And some reasonable functions like: when I change the value, a function gets called, uses this offset to reach the said value)
-Subtract offset from value's address
-Get a new memory location. Here comes the twist:

--Nothing points to this location (Exact value search, hex, looking for this address)
--Nothing accesses this location
--Noting points to the original value's address

How does the program access this value then? Have someone (you?) ever seen something like this? I can clarify further if needed.
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 471

Joined: 09 May 2003
Posts: 25859
Location: The netherlands

PostPosted: Thu Dec 24, 2020 12:49 pm    Post subject: Reply with quote

yes, it's likely an indexed variable

Look up in the code how that register got the value it is. Likely therer's a lea, or a add reg,xxx based on an index value that offsets the final address to the object

_________________
Do not ask me about online cheats. I don't know any and wont help finding them.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
Paprikaskrumpli
Cheater
Reputation: 0

Joined: 19 Dec 2020
Posts: 29

PostPosted: Thu Dec 24, 2020 12:52 pm    Post subject: Reply with quote

Dark Byte wrote:
yes, it's likely an indexed variable

Look up in the code how that register got the value it is. Likely therer's a lea, or a add reg,xxx based on an index value that offsets the final address to the object


Thank you, I'll look into it! What should I do the pointersan to after? The first element of the array/verctor right?
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