 |
Cheat Engine The Official Site of Cheat Engine
|
| View previous topic :: View next topic |
| Author |
Message |
everlearning5 How do I cheat?
Reputation: 0
Joined: 26 Dec 2023 Posts: 4
|
|
| Back to top |
|
 |
ParkourPenguin I post too much
Reputation: 152
Joined: 06 Jul 2014 Posts: 4719
|
Posted: Tue Dec 26, 2023 5:01 pm Post subject: |
|
|
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 |
|
 |
everlearning5 How do I cheat?
Reputation: 0
Joined: 26 Dec 2023 Posts: 4
|
Posted: Tue Dec 26, 2023 8:12 pm Post subject: |
|
|
| 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
|
|
| Back to top |
|
 |
everlearning5 How do I cheat?
Reputation: 0
Joined: 26 Dec 2023 Posts: 4
|
Posted: Fri Jan 12, 2024 4:04 pm Post subject: |
|
|
| 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!
| Description: |
|
| Filesize: |
50.52 KB |
| Viewed: |
1598 Time(s) |

|
|
|
| Back to top |
|
 |
ParkourPenguin I post too much
Reputation: 152
Joined: 06 Jul 2014 Posts: 4719
|
Posted: Fri Jan 12, 2024 5:22 pm Post subject: |
|
|
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 |
|
 |
everlearning5 How do I cheat?
Reputation: 0
Joined: 26 Dec 2023 Posts: 4
|
Posted: Fri Jan 12, 2024 9:43 pm Post subject: |
|
|
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 |
|
 |
|
|
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
|
|