Can't compile code

Anything Cheat Engine related, bugs, suggestions, helping others, etc..
Post Reply
Stagnant
What is cheating?
What is cheating?
Posts: 2
Joined: Tue Jan 25, 2022 9:02 pm
Reputation: 0

Can't compile code

Post by Stagnant »

I was trying to hack my first game, and i chose a game called recettear and i wanted to create an xp multiplier code but i couldn't do that because CE would throw an error in the lines that i edited and i don't know why. Here's the original code:

Code: Select all

originalcode:
add dword ptr [edi+44],0A
push 02
And here's how it turned out after i added my multiplier:

Code: Select all

[ENABLE]
alloc(newmem,2048)
alloc(Multiplier)
label(returnhere)
label(originalcode)
label(exit)
registersymbol(Multiplier)

Multiplier:
dd #1

newmem:
imul [Multiplier], 0A

originalcode:
add dword ptr [edi+44],[Multiplier]
push 02

exit:
jmp returnhere

"recettear.exe"+8CD61:
jmp newmem
nop
returnhere:


 
 
[DISABLE]
dealloc(newmem)
dealloc(Multiplier)
unregistersymbol(Multiplier)
"recettear.exe"+8CD61:
add dword ptr [edi+44],0A
push 02
When i try to save to current cheat table it gives me the Can't compile error, now i checked what dword ptr means since it was something i've never seen in the tutorial series that i watched i think i understood what it means and i think it was the problem so i removed it and it still didn't work, how do i fix this?

User avatar
LeFiXER
LeFixer
LeFixer
Posts: 482
Joined: Wed Mar 24, 2021 9:35 am
Reputation: 243

Re: Can't compile code

Post by LeFiXER »

Can't guarantee it will work, but I made some changes which technically should work although I don't know how you've come to select this location.

Code: Select all

[ENABLE]
// Ideally, you'll want to use an AOB injection so that the location can be found with subsequent restarts of the game.
alloc(newmem,2048)
alloc(Multiplier,4) // You didn't allocate any bytes for your stored value
label(returnhere)
label(originalcode)
label(exit)
registersymbol(Multiplier)

Multiplier:
dd 0

newmem:
push ebx 
mov ebx,[Multiplier]
imul ebx, 0A
pop ebx

originalcode:
add dword ptr [edi+44],ebx
push 02

exit:
jmp returnhere

"recettear.exe"+8CD61:
jmp newmem
nop
returnhere:

[DISABLE]

dealloc(Multiplier)  // Important to deallocate the allocated memory
dealloc(newmem)
If you add an address manually to the table with the address: Multiplier, you should be able to set the value to one of your choosing.

Stagnant
What is cheating?
What is cheating?
Posts: 2
Joined: Tue Jan 25, 2022 9:02 pm
Reputation: 0

Re: Can't compile code

Post by Stagnant »

LeFiXER wrote:
Tue Jan 25, 2022 10:14 pm
Can't guarantee it will work, but I made some changes which technically should work although I don't know how you've come to select this location.

Code: Select all

[ENABLE]
// Ideally, you'll want to use an AOB injection so that the location can be found with subsequent restarts of the game.
alloc(newmem,2048)
alloc(Multiplier,4) // You didn't allocate any bytes for your stored value
label(returnhere)
label(originalcode)
label(exit)
registersymbol(Multiplier)

Multiplier:
dd 0

newmem:
push ebx 
mov ebx,[Multiplier]
imul ebx, 0A
pop ebx

originalcode:
add dword ptr [edi+44],ebx
push 02

exit:
jmp returnhere

"recettear.exe"+8CD61:
jmp newmem
nop
returnhere:

[DISABLE]

dealloc(Multiplier)  // Important to deallocate the allocated memory
dealloc(newmem)
If you add an address manually to the table with the address: Multiplier, you should be able to set the value to one of your choosing.
That worked as intended thanks, i perfectly understand what you did there it makes sense but why didn't my version of the code not work do you have any clue?
Note: When i first wrote the code i didn't forget to allocate the 4 bytes so it has nothing to do with that.

User avatar
LeFiXER
LeFixer
LeFixer
Posts: 482
Joined: Wed Mar 24, 2021 9:35 am
Reputation: 243

Re: Can't compile code

Post by LeFiXER »

Stagnant wrote:
Tue Jan 25, 2022 10:36 pm
That worked as intended thanks, i perfectly understand what you did there it makes sense but why didn't my version of the code not work do you have any clue?
Note: When i first wrote the code i didn't forget to allocate the 4 bytes so it has nothing to do with that.
You're welcome :). It's to my understanding that the imul instruction requires more instructions than a single line to actually compute the arithmetic, so we use a register to hold the calculated sum and then move that value to the intended place.

Post Reply

Who is online

Users browsing this forum: No registered users