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 


Calling a function using AA/Create Thread

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

Joined: 23 Dec 2024
Posts: 1

PostPosted: Mon Dec 23, 2024 6:48 pm    Post subject: Calling a function using AA/Create Thread Reply with quote

Hey. I have been stuck in with matter for a couple of days now and I am resulting to the forums to seek for any advice concerning trying to call a function in a game. I have tried making sure the registers are exactly the same and the stack has the arguments pushed onto it.

I've set a break point on the function that I am trying to call and luckily found that the registers and stack look very similar to each others every time I call the function in the game. Because of that, I've tried pushing values onto the stack, and moving the same values onto the registers to not mess with the flow of code as much as I can, but even when I copy all the registers, copy the stack, the game still crashes once a thread is created.


I have attached a picture of the stack and the registers. There are 3 values pushed to the stack before the call.

This is the the insides of call Client.exe+4BA830:
Code:

mov [rsp+08],rbx
push rdi
sub rsp,30
mov rdi,rdx
mov [rsp+28],00000000
mov edx,00000006
mov [rsp+20],00000000
xor r9d,r9d
xor r8d,r8d
mov rbx,rcx
call Client.exe+4BB6C0
mov rax,[rbx+000003C8]
test byte ptr [rax+0C],08
je Client.exe+4BA877
movss xmm2,[Client.exe+8FE400]
jmp Client.exe+4BA87F
movss xmm2,[Client.exe+8EDD40]
mov edx,[rdi+00000340]
mov r9d,00000001
mov [rsp+28],00000001
mov rcx,rbx
mov [rsp+20],00000000
call Client.exe+4BB6F0
mov rbx,[rsp+40]
add rsp,30
pop rdi
ret


I have tried moving literally every single register and pushed the 3 values into the stack, but to no avail.

What I am doing wrong? Am I've tried reading about the stack and I am questioning myself if I should need to push all the values between the rsp and the rbp in the stack or if the 3 values that I am currently pushing are enough.



NsoJylD[1].png
 Description:
Image of break point on call
 Filesize:  105.37 KB
 Viewed:  1602 Time(s)

NsoJylD[1].png


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

Joined: 06 Jul 2014
Posts: 4696

PostPosted: Mon Dec 23, 2024 10:34 pm    Post subject: Reply with quote

Zoupi wrote:
I have tried moving literally every single register
RSP and RBP shouldn't be included in that.
What about the xmm registers? It's weird how it modifies xmm2 but not xmm0 or xmm1 before `call Client.exe+4BB6F0` when that's suppose to be a volatile register. Maybe they're set by `call Client.exe+4BB6C0`.

You might be calling the function incorrectly. Post your AA script.

Worst case, there could be some global or thread-local state the call is accessing. e.g. the call does something only the main thread is allowed to do.

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