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 


Suggestions?

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

Joined: 26 Dec 2022
Posts: 26
Location: Wasilla, Ak

PostPosted: Fri Jan 06, 2023 11:28 am    Post subject: Suggestions? Reply with quote

Code:
{$TRY}
    mov [SaveRCX],rcx
    mov rbx,HorizonZeroDawn.exe+071526A8
    mov rcx,[rbx]
    mov rbx,[rcx+40]
    mov rcx,[rbx+50]
    mov rbx,[rcx+180]
    mov rcx,[rbx+58]
    mov rbx,[rcx+48]
    mov [Address],rbx
    mov rbx,0
    mov rcx,[SaveRCX]
{$EXCEPT}


HorizonZeroDawn.exe+071526A8 is a static address that never changes, and offset 48 is a base offset for any item in the game. F98 is an offset representing the actual item, and 58 is it's count.

Okay, what my issue is, is sometimes Offset 3 changes and I have to generate a new pointer map, and run a new pointer scan to find out what this offset is.

What I'm wandering is, is there a way to find where this offset is being written, so I can write my code around it.

Any suggestions or ideas on how you would go about achieving this?



ScreenShot.png
 Description:
 Filesize:  79.07 KB
 Viewed:  1597 Time(s)

ScreenShot.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 06, 2023 12:13 pm    Post subject: Reply with quote

Why is the last offset changing? e.g. if it's an array, you might need to search through the array to find the correct element.
_________________
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
phpjunkie
Cheater
Reputation: 0

Joined: 26 Dec 2022
Posts: 26
Location: Wasilla, Ak

PostPosted: Fri Jan 06, 2023 3:58 pm    Post subject: Reply with quote

I've been digging through this and found that the only offset that is changing is Offset 2. So far it has only changed between 180, 188, and 190. I've also discovered that Offset 2 seems to be my character.

Offset 5 ( F98 ) is tied directly to an item, and Offset 6 ( 58 ) is how many I have. Offset 5 ( F98 ) is Precision Arrows. If I was to change that offset to 98, it'd become Metal Vessel.

I've been talking to people on discord and someone said that Offset 2 is likely being defined by another module.

Anyway, I've shortened up my script to Offset 2, the one that seems to be my character.

Code:
mov [SaveRCX],rcx

{$TRY}
    mov rbx,HorizonZeroDawn.exe+071526A8
    mov rcx,[rbx]
    mov rbx,[rcx+40]
    mov rcx,[rbx+50]
    mov rbx,[rcx+180]
    mov [CharacterAddress],rbx
{$EXCEPT}

mov rbx,0
mov rcx,[SaveRCX]
I've also noticed that once I get the address assigned to CharacterAddress it stays constant as long as I use CharacterAddress. The problem I'm having is Offset 3 keeps changing, forcing me to generate a new Pointer Map, and do a new Pointer Scan to get the offset I need.

Last edited by phpjunkie on Fri Jan 06, 2023 4:41 pm; edited 1 time in total
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 06, 2023 4:37 pm    Post subject: Reply with quote

phpjunkie wrote:
So far it has only changed between 180, 188, and 190.
Sounds like an array of pointers. What happens when it changes? Does the pointer path completely break? Where does it break?
If it is an array of pointers, you could search through the array for some distinguishing information like step 9 of the tutorial.

Maybe it's simply a bad pointer path. If an offset's value changes, it should've been filtered out when you do a rescan.

You could backtrace from an access to the value and figure out a "real" pointer path by reading assembly. Sometimes that's harder than expected when there's more complicated data structures involved (e.g. hash tables).

Also, SaveRCX can be replaced with push / pop, and xor is more commonly used for zeroing a register

_________________
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
phpjunkie
Cheater
Reputation: 0

Joined: 26 Dec 2022
Posts: 26
Location: Wasilla, Ak

PostPosted: Fri Jan 06, 2023 4:40 pm    Post subject: Reply with quote

Sorry, I had to correct my warding in my previous post. It is offset 2 that is breaking my script. It is the offset that is tied directly to my character. The only time it changes is when I fast travel in the game.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking 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