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 


How does "pointer scan" actually do for search an

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

Joined: 06 Apr 2016
Posts: 2

PostPosted: Sat Aug 24, 2019 6:47 pm    Post subject: How does "pointer scan" actually do for search an Reply with quote

To found base address of a game, "pointer scan " seems to be a cool way to do it.
But I want to know more detail about it. Frankly, I want to make it my own way in C++.

Question 1: How does CE decides whether a certain address is a base address? I guess is that CE would verify it by checking if an address is in the region of a certain module(main exe module or other dll module)?

Question 2:For a more lazy way to use pointer scan, it is suggested that first generate a pointer map A after getting value with a dynamic address, then restart game, getting value with another dynamic address and generate pointer map B. Finally, do "pointer scan" with this address while loading B and compare A.
But I don't get the meaning of the 2 maps. For map B, since "point scan" is on the way, why generating map first? Just for use after another restarting game?
And especially for map A, what does "compare" mean here? In my opinion, the thing to be compared should not be the address to search for, as the game is restarted, then does it mean comparing "path to search for"---if this is the case, why path would be different every time game restarted?

Question3: This maybe a related question for the above question--- we know sometimes a base address may not be for a real static or global variable, maybe it just a quite static address allocated in stack. Therefore, sometimes we could see the very 1st base address is like "xxx.exe - offset" with a negative offset. But how does CE decides how much deep to search this negative offsets.
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 458

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

PostPosted: Sun Aug 25, 2019 12:33 am    Post subject: Reply with quote

1: yes, it checks if it's indide a module or stack base (depending on options)

2: both map A and map B will of course have different addresses
when you have loaded a map you have to give it the address at the time map was made (the pointerscan config window has a dropdown list of memoryrecord addresses at the time the map was generated)
That way when CE finds a pointer with the information of map A it can then check if that same pointerpath also points to the address of map B

3: that is determined by the maximum stacksize to be deemed as static in the pointerscan config window (bottom right of advanced options)

_________________
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
dbsxdbsx
How do I cheat?
Reputation: 0

Joined: 06 Apr 2016
Posts: 2

PostPosted: Sun Aug 25, 2019 4:49 am    Post subject: Reply with quote

@Dark Byte, thanks for your answer.
So for question 2, the inner logic is that there would be more possibility that a path is what I am searching for as it is from previous different map.

But I still don't understand why map would be different?Just because dynamic address to be searched is different, so different paths are designed from base address?

By the way , do I have to generate different maps for different dynamic addresses?
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 458

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

PostPosted: Sun Aug 25, 2019 5:15 am    Post subject: Reply with quote

a map is basically a memory snapshot of the process limited to pointers only. It can be reused for many things

internally the map is used for finding pointervalues within a range

e.g you have address 12345000 and you need all addresses that hold a value if 12344000 and 12345000 then using a pointervalue map is faster than searching the memory every time

_________________
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
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