Hey, nice simple table you got over here
Just a heads up, you don't need to allocate memory to NOP something, you should instead just:
Code: Select all
[ENABLE]
aobscanmodule(ghost,CyberShadow.exe,E8 FA 50 02 00)
registersymbol(ghost)
ghost:
nop 5
[DISABLE]
ghost:
db E8 FA 50 02 00
unregistersymbol(ghost)
One more thing, 4 bytes above that call you nopped is a conditional jump,
je CyberShadow.exe+75D626, which if true, will skip the call, so a more "elegant" solution would be to make it always jump:
Code: Select all
[ENABLE]
aobscanmodule(god_mode,CyberShadow.exe,74 07 8B CF E8 FA 50 02 00)
registersymbol(god_mode)
god_mode:
db EB
[DISABLE]
god_mode:
db 74
unregistersymbol(god_mode)
And last, three lines above this jump is the actual compare statement,
cmp byte ptr [edi+74249],0, which checks for hit collision based on some things calculated in the call above it. If you check what writes that memory at
[edi+74249], you will see
mov byte ptr [esi+74249],1. So, just changing the last byte to 0 will do the trick:
Code: Select all
[ENABLE]
aobscanmodule(god_mode,CyberShadow.exe,C6 86 49 42 07 00 01)
registersymbol(god_mode)
god_mode+6:
db 00
[DISABLE]
god_mode+6:
db 01
unregistersymbol(god_mode)
However, doing it this way won't make you instantly invincible. To trigger the code and become invincible, after activating the script, you will have to either die/respawn, finish level/enter new one, get hit once or make sure the script is active before entering any level. Instead, for instant invincibility, we can use this pointer:
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>191</ID>
<Description>"GodMode (0 = Invincible, 1 = Normal)"</Description>
<LastState Value="0" RealAddress="03FB2561"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>CyberShadow.exe+32C3040</Address>
<Offsets>
<Offset>74249</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatTable>
Just copy/paste this into CE table, set value to 0, and freeze it.
Btw, keep in mind that some spikes/obstacles can still one-hit kill us, regerdless of hit collision's status. It's hardcoded that way, and i'm too lazy to trace that crap..