I want to get the address of that dword ptr [rax+24] on it´s original place and store it under a registered symbol so that I can use it to get my Player based values like health, flags and other nice stuff (which are in my player object) all the time.
Player object gets destroyed after every fight so pointers or aob scans are useless. Unless somebody knows some tricks i don`t.
That dword ptr [rax+24] knows the address of max health. I want that address and it´s value without moving it somewhere else.
I only managed it to store the value to a new mem place (although practice was nice). Spoiler
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(Player,SouthPark_TFBW.exe,83 78 24 00 EB 38) // should be unique
alloc(newmem,$1000,"SouthPark_TFBW.exe"+65FFC54)
alloc(address,$4)
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(Player,SouthPark_TFBW.exe,83 78 24 00 EB 38) // should be unique
alloc(newmem,$1000,"SouthPark_TFBW.exe"+65FFC54)
alloc(address,$8)
label(code)
label(return)
newmem:
code:
cmp dword ptr [rax+24],00
mov [address], rax // store the base address
// Then in a memory record use '[address]+24' to point to the health address.
jmp SouthPark_TFBW.exe+65FFC92
jmp return // this code won't ever run because of the jump before it
Player:
jmp newmem
nop
return:
registersymbol(Player)
registersymbol(address)
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
Player:
db 83 78 24 00 EB 38
address:
dq 00
unregistersymbol(Player)
unregistersymbol(address)
dealloc(newmem)
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(Player,SouthPark_TFBW.exe,83 78 24 00 EB 38) // should be unique
alloc(newmem,$1000,"SouthPark_TFBW.exe"+65FFC54)
alloc(address,$8)
label(code)
label(return)
newmem:
code:
cmp dword ptr [rax+24],00
mov [address], rax // store the base address
// Then in a memory record use '[address]+24' to point to the health address.
jmp SouthPark_TFBW.exe+65FFC92
jmp return // this code won't ever run because of the jump before it
Player:
jmp newmem
nop
return:
registersymbol(Player)
registersymbol(address)
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
Player:
db 83 78 24 00 EB 38
address:
dq 00
unregistersymbol(Player)
unregistersymbol(address)
dealloc(newmem)
Thank you very much for your support. I will give credit when I release that cheat table.