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 


Static Pointer Addresses

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

Joined: 04 May 2020
Posts: 2

PostPosted: Mon May 04, 2020 5:37 pm    Post subject: Static Pointer Addresses Reply with quote

Hey, I am new using Cheat Engine, I couldn't fully understand some things, I don't know if it's due to my lack of knowledge though.

When we search for values, our main goal is to find static pointers to that address. But is the memory allocated at the same place every time?(Relative to the program's memory place of course) I don't know if a program gets compiled, when we execute it every time all memory is relative to the base module and that's the case every time. So is it true, can I use that memory address in my C++ programs?

One other question is, when we search a memory address by value, sometimes(actually frequently) we have to trace back from pointers that point to our desired address. What is the reason behind this? Does this happen when the game uses pointers and what we find is that pointer's address at the first place or this is some other thing about Cheat Engine?

Sorry if I bother you but one other thing is, sometimes when I trace back from pointers(I don't know if it's the right term or even true) I get multiple static pointers(green ones i think) and some non-static pointers. And after that stage I don't know what really to do, so I choose one of the static ones and use it, but it works for a while then it points to "??", but the other ones or a few are fine still. What am I doing here and what are your suggestions?
Back to top
View user's profile Send private message
OldCheatEngineUser
Whateven rank
Reputation: 20

Joined: 01 Feb 2016
Posts: 1586

PostPosted: Sat May 09, 2020 12:21 pm    Post subject: Re: Static Pointer Addresses Reply with quote

alexmoran wrote:
When we search for values, our main goal is to find static pointers to that address.


when you search for value, your goal is to find the memory address within the virtual address space that holds the current value.

when you search for addresses i.e. pointers, then your goal should be to find a static address that resides within the readable/writable data section of that executable or the loaded module.

alexmoran wrote:
I don't know if a program gets compiled, when we execute it every time all memory is relative to the base module and that's the case every time. So is it true, can I use that memory address in my C++ programs?


only bytecode languages are compiled at runtime. (there are some exceptions)

when you execute your program only physical sections (within executable file) have relative offset, all other memory allocation is determined by the OS and sometimes by developer if the desired virtual page is available.

you can use the static addresses, but not the dynamic ones unless you find the offsets for the dynamic address that lead to a static address.

alexmoran wrote:
One other question is, when we search a memory address by value, sometimes(actually frequently) we have to trace back from pointers that point to our desired address. What is the reason behind this? Does this happen when the game uses pointers and what we find is that pointer's address at the first place or this is some other thing about Cheat Engine?


imagine that as a Tree -> Trunk -> bud -> leaves
the first thing you will find is the value you want (leaf)
then you will find the first pointer to that leaf, which is bud which is still dynamic
then trunk and finally the static tree pointer.

alexmoran wrote:
And after that stage I don't know what really to do, so I choose one of the static ones and use it, but it works for a while then it points to "??", but the other ones or a few are fine still. What am I doing here and what are your suggestions?


that because game developer can use temporary pointers, can reuse some pointers for other purposes and so on.

also there are many different static addresses you can find, sometimes different in-game functions have different pointers to a different static addresses.

it heavily depends on the game engine, developers and sometimes the instruction you picked to do the manual pointer search.

_________________
About Me;
I Use CE Since Version 1.X, And Still Learning How To Use It Well!
Jul 26, 2020
STN wrote:
i am a sweetheart.
Back to top
View user's profile Send private message Visit poster's website
alexmoran
How do I cheat?
Reputation: 0

Joined: 04 May 2020
Posts: 2

PostPosted: Mon May 11, 2020 6:56 pm    Post subject: Re: Static Pointer Addresses Reply with quote

OldCheatEngineUser wrote:
alexmoran wrote:
When we search for values, our main goal is to find static pointers to that address.


when you search for value, your goal is to find the memory address within the virtual address space that holds the current value.

when you search for addresses i.e. pointers, then your goal should be to find a static address that resides within the readable/writable data section of that executable or the loaded module.

alexmoran wrote:
I don't know if a program gets compiled, when we execute it every time all memory is relative to the base module and that's the case every time. So is it true, can I use that memory address in my C++ programs?


only bytecode languages are compiled at runtime. (there are some exceptions)

when you execute your program only physical sections (within executable file) have relative offset, all other memory allocation is determined by the OS and sometimes by developer if the desired virtual page is available.

you can use the static addresses, but not the dynamic ones unless you find the offsets for the dynamic address that lead to a static address.

alexmoran wrote:
One other question is, when we search a memory address by value, sometimes(actually frequently) we have to trace back from pointers that point to our desired address. What is the reason behind this? Does this happen when the game uses pointers and what we find is that pointer's address at the first place or this is some other thing about Cheat Engine?


imagine that as a Tree -> Trunk -> bud -> leaves
the first thing you will find is the value you want (leaf)
then you will find the first pointer to that leaf, which is bud which is still dynamic
then trunk and finally the static tree pointer.

alexmoran wrote:
And after that stage I don't know what really to do, so I choose one of the static ones and use it, but it works for a while then it points to "??", but the other ones or a few are fine still. What am I doing here and what are your suggestions?


that because game developer can use temporary pointers, can reuse some pointers for other purposes and so on.

also there are many different static addresses you can find, sometimes different in-game functions have different pointers to a different static addresses.

it heavily depends on the game engine, developers and sometimes the instruction you picked to do the manual pointer search.


Thank you, but what you meant by physical sections?
And I've read green may not mean always static addresses and can change time to time and not safe to use it in a program always. Is it true or it is completely safe to use that static address. If not what are better ways to do it?
Back to top
View user's profile Send private message
DanyDollaro
Master Cheater
Reputation: 3

Joined: 01 Aug 2019
Posts: 334

PostPosted: Tue May 12, 2020 1:27 pm    Post subject: Reply with quote

alexmoran wrote:
And I've read green may not mean always static addresses and can change time to time and not safe to use it in a program always. Is it true or it is completely safe to use that static address. If not what are better ways to do it?

The green addresses indicate that the address is allocated on a module (a module can be a Dll or an Exe mapped in the virtual address space of the process), those are formed by the name of a module plus an offset, therefore if initially the green address will be in a position and after restarting the program it will be in a different memory location, but if you have the name of the module and the offset you can easily go back to the current position, just know the base address of the module and add the offset, but there are cases where they can change, for example if a program is updated it is possible that that pointer no longer works.

The reason why addresses change when you restart the program is called "address space layout randomization (ASLR)" is a system of memory protection that make buffer overrun attacks (and other type of attacks) less effective, In other words, the ASLR makes it more difficult for programs like viruses to infect the OS.


Last edited by DanyDollaro on Tue May 12, 2020 3:29 pm; edited 2 times in total
Back to top
View user's profile Send private message
OldCheatEngineUser
Whateven rank
Reputation: 20

Joined: 01 Feb 2016
Posts: 1586

PostPosted: Tue May 12, 2020 2:35 pm    Post subject: Reply with quote

DanyDollaro wrote:
The reason why addresses change when you restart the program is called "address space layout randomization (ASLR)" is a system of memory protection that make buffer overrun attacks (and other type of attacks) less effective, In other words, the ASLR makes it more difficult for programs like viruses to infect the OS.


ASLR does not affect virtual address space, but relocation can affect the virtual address space (per module).

_________________
About Me;
I Use CE Since Version 1.X, And Still Learning How To Use It Well!
Jul 26, 2020
STN wrote:
i am a sweetheart.
Back to top
View user's profile Send private message Visit poster's website
DanyDollaro
Master Cheater
Reputation: 3

Joined: 01 Aug 2019
Posts: 334

PostPosted: Wed May 13, 2020 3:32 pm    Post subject: Reply with quote

OldCheatEngineUser wrote:
ASLR does not affect virtual address space, but relocation can affect the virtual address space (per module).

How can you say that the ASLR does not affect the virtual address space? From what source did you get this? I'd like to consult it
Back to top
View user's profile Send private message
OldCheatEngineUser
Whateven rank
Reputation: 20

Joined: 01 Feb 2016
Posts: 1586

PostPosted: Wed May 13, 2020 4:25 pm    Post subject: Reply with quote

OldCheatEngineUser wrote:
ASLR does not affect virtual address space, but relocation can affect the virtual address space (per module).

in context of relative address and finding static pointer, as we are talking about static addresses that points to other stuff.
as for base address, it can be found using multiple methods.

_________________
About Me;
I Use CE Since Version 1.X, And Still Learning How To Use It Well!
Jul 26, 2020
STN wrote:
i am a sweetheart.
Back to top
View user's profile Send private message Visit poster's website
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