2017-09-23 17:18 CEST

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0000295Cheat Enginepublic2013-10-26 11:45
ReporterCsimbi 
Assigned ToDark Byte 
PrioritynormalSeverityblockReproducibilityalways
StatusresolvedResolutionno change required 
Summary0000295: CE 6.3 (Frankenstein_Base_1975_upto_2180) - AutoAssembler can't compile instruction
DescriptionI am getting an error when I try to assign my script to the table.

The "original":
mov word ptr [eax*2+Battlecry.exe+199B60],ecx
The "variants" I tried (playing with quote and shuffling things around):
mov word ptr [eax*2+"Battlecry.exe"+199B60],ecx
mov word ptr [Battlecry.exe+199B60+eax*2],ecx
mov word ptr ["Battlecry.exe"+199B60+eax*2],ecx
Neither one of these are accepted by the AutoAssembler.

I am using the latest Frankenstein build from mgr.inc: Frankenstein_Base_1975_upto_2180

This is the instruction that I replaced for the hook:
movsx ecx,word ptr [eax*2+Battlecry.exe+199B60]
//Alt: db 0F BF 0C 45 60 9B 59 00
and not even this is accepted (even though it was generated by CE itself).

Is this a side-effect of using the Frankenstein build, or is this a real bug?
If the first, please ignore, if the second, please consider fixing it.
In the meantime, I'll try to find a different hook.

Thank you!

PS. I put the script skeleton below for reference.
Additional Information[ENABLE]
assert("Battlecry.exe"+14AE2B,0F BF 0C 45 60 9B 59 00)

alloc(newmem,2048)

label(lblAbilityPointGetter)
label(lblAbilityPointGetterSkip)
label(lblAbilityPointGetterRet)

label(bEnableMinAbilityPointsOnLevelUp)
label(iMinAbilityPointsOnLevelUp)
registersymbol(bEnableMinAbilityPointsOnLevelUp)
registersymbol(iMinAbilityPointsOnLevelUp)

newmem:
bEnableMinAbilityPointsOnLevelUp:
dd 1
iMinAbilityPointsOnLevelUp:
dd (int)50

lblAbilityPointGetter:
db 0F BF 0C 45 60 9B 59 00 // Original code
cmp dword ptr [bEnableMinAbilityPointsOnLevelUp],1
jne short lblAbilityPointGetterSkip
cmp dword ptr [iMinAbilityPointsOnLevelUp],ecx
jle short lblAbilityPointGetterSkip
mov ecx,[iMinAbilityPointsOnLevelUp]
mov word ptr [Battlecry.exe+199B60+eax*2],ecx // <- this is where AA throws the error.
lblAbilityPointGetterSkip:
jmp lblAbilityPointGetterRet

"Battlecry.exe"+14AE2B:
jmp lblAbilityPointGetter
nop
nop
nop
lblAbilityPointGetterRet:

[DISABLE]
"Battlecry.exe"+14AE2B:
//Alt: movsx ecx,word ptr [eax*2+Battlecry.exe+199B60]
db 0F BF 0C 45 60 9B 59 00

unregistersymbol(bEnableMinAbilityPointsOnLevelUp)
unregistersymbol(iMinAbilityPointsOnLevelUp)

dealloc(newmem)
TagsNo tags attached.
Attached Files

-Relationships
+Relationships

-Notes

~0000615

Csimbi (reporter)

Meh, it's the source register; it should be CX instead of ECX:
mov word ptr [Battlecry.exe+199B60+eax*2],cx
Now it's accepted.

Please close this ticket - sorry about the false alarm!
+Notes

-Issue History
Date Modified Username Field Change
2013-10-26 08:42 Csimbi New Issue
2013-10-26 08:46 Csimbi Note Added: 0000615
2013-10-26 11:45 Dark Byte Status new => resolved
2013-10-26 11:45 Dark Byte Resolution open => no change required
2013-10-26 11:45 Dark Byte Assigned To => Dark Byte
+Issue History