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 to update a value for a volatile address

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

Joined: 26 Dec 2023
Posts: 4

PostPosted: Tue Dec 26, 2023 4:51 pm    Post subject: How to update a value for a volatile address Reply with quote

Hi there!

So, I got an address that keeps changing every time I act in-game.
I've tried multiple pointerscans in 12 level+ reducing the results to offset ends, etc, however not a single one was kept unchanged after perform this action in-game.

What would you guys recommend, do a pointerscan with very higher values or try some injecting to get a return of the newer value from the brand-new addr?
If scripting to get the new addr will be the way, I'd love some help to do that <3.

That 3697 is the newest value I added using the Code List, in the other hand, those 65535 are the old ones modified by act previously mentioned.

Thanks in advance! Very Happy



post.png
 Description:
 Filesize:  20.77 KB
 Viewed:  1930 Time(s)

post.png


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

Joined: 06 Jul 2014
Posts: 4719

PostPosted: Tue Dec 26, 2023 5:01 pm    Post subject: Reply with quote

Search for "injection copy"
_________________
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
everlearning5
How do I cheat?
Reputation: 0

Joined: 26 Dec 2023
Posts: 4

PostPosted: Tue Dec 26, 2023 8:12 pm    Post subject: Reply with quote

ParkourPenguin wrote:
Search for "injection copy"


Thanks for your input on that! I did a quick look at it and it looks scary for a beginner, although it's indeed where I should go right now. I'll fight this challenge.

If successful, I'll return to thank you once again, otherwise, I'll keep on fighting Very Happy
Back to top
View user's profile Send private message
everlearning5
How do I cheat?
Reputation: 0

Joined: 26 Dec 2023
Posts: 4

PostPosted: Fri Jan 12, 2024 4:04 pm    Post subject: Reply with quote

ParkourPenguin wrote:
Search for "injection copy"


Hi there!

I've been trying and strugglin for a while, but then decided to come bother you guys once again...

Injection Copies seems to be exactly the method to solve my issue.

However, the same code instruction is responsible for detecting every move from characters, monsters, npcs, within the game.

I've searched for a while already and couldn't find how to go more specific in targeting the address (for example, my pets movement), instead of getting updates of every single walkable objects that walks in my POV XD.

Thanks in advance!



scan.png
 Description:
 Filesize:  50.52 KB
 Viewed:  1593 Time(s)

scan.png


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

Joined: 06 Jul 2014
Posts: 4719

PostPosted: Fri Jan 12, 2024 5:22 pm    Post subject: Reply with quote

You could try step 9 of the CE tutorial, or you could use an injection copy to get a (non-static) pointer to the value you want.
I'd try the latter first.

Try manual pointer scanning. You don't need a static pointer since you're going to use a code injection to find it, so don't worry about "green addresses" or stuff like that.
The instruction that accesses it uses `[rcx+1C]`, so subtract 0x1C from the address of your value and search for that address (type 8-byte). For every result that comes up, bring it down to the address list, see what instructions access that pointer, and play in the game for a little bit to let the game run code that accesses those addresses. For each instruction that comes up, see what addresses each instruction accesses (show in disassembler, right click menu). You're looking for some instruction that only accesses the address you want and is run frequently enough (code injections are only run when the game runs the original code).
If you do find a good injection point, do an injection copy in the same way. The memory record for the value will have 2 offsets instead of 1. e.g. if the instruction that accesses a pointer to the value uses `[rsi+44]`, the base address will be `ptrToPetPos` (or whatever you named the allocated memory) with offsets `44` and `1C` from the base.
If you can't find a good injection point, try repeating that recursively to another pointer level. (instead of a pointer to the value, find a pointer to a pointer to the value)

If the found pointers seem unreliable and/or you really dislike manual pointer scanning (I would after >1 level), you can try the pointer scanner. Make sure to deselect "base addresses must be static" or something to that effect, reduce the max level to 2 or 3, don't worry about generating multiple pointer maps, and don't restart the game between rescans. Rescan it frequently, but not in too different of game states. e.g. starting a new game or loading a save might involve reallocating memory at a pointer level beyond what you're scanning for, effectively invalidating all results of the pointer scan.

As for step 9 of the CE tutorial, you can look up a walkthrough of it online. It might be easier, but that's down to luck.

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

Joined: 26 Dec 2023
Posts: 4

PostPosted: Fri Jan 12, 2024 9:43 pm    Post subject: Reply with quote

I've scanned all values that could have been accessed from the opcode structure to minimize the number of results and started from there. Later, I obtained what I needed using a specific type of "string filtering," which led me to the exact address I was looking for. I then performed the Injection Copy to jump if the string was not found or move to the register if it was found!

Thanks for all the help and patience, @ParkourPenguin! You're awesome.



ps.: is it possible to store the every newest value from the newest every pointer to some .txt, in order to use out of the AOB Injection scope?
I've been trying to use the label I've gotten from the injection copy, but isn't returning any value - saving the value in some .txt might do the trick.
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