<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="44">
  <CheatEntries>
    <CheatEntry>
      <ID>0</ID>
      <Description>"Money"</Description>
      <VariableType>Float</VariableType>
      <Address>ghost.exe+20ADCB0</Address>
    </CheatEntry>
    <CheatEntry>
      <ID>19</ID>
      <Description>"Unlimited Proton Pack"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : ghost.exe
  Version: 
  Date   : 2022-12-28
  Author : seneeki

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(heat,ghost.exe,4C 89 A6 68 4E 02 00) // should be unique
alloc(newmem,$1000,heat)

label(code)
label(return)

newmem:

  mov [rsi+00024E28],(float)0
code:
  mov [rsi+00024E68],r12
  jmp return

heat:
  jmp newmem
  nop 2
return:
registersymbol(heat)

[DISABLE]

heat:
  db 4C 89 A6 68 4E 02 00

unregistersymbol(heat)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: ghost.exe+C7C0F

ghost.exe+C7BE3: 48 8B 05 96 7A D0 00  - mov rax,[ghost.exe+DCF680]
ghost.exe+C7BEA: 44 38 A0 BA AD 03 00  - cmp [rax+0003ADBA],r12b
ghost.exe+C7BF1: 75 07                 - jne ghost.exe+C7BFA
ghost.exe+C7BF3: 33 C9                 - xor ecx,ecx
ghost.exe+C7BF5: E8 D6 FE 1E 00        - call ghost.exe+2B7AD0
ghost.exe+C7BFA: 0F 28 CE              - movaps xmm1,xmm6
ghost.exe+C7BFD: 48 8B CE              - mov rcx,rsi
ghost.exe+C7C00: E8 1B 37 02 00        - call ghost.exe+EB320
ghost.exe+C7C05: 48 8B CE              - mov rcx,rsi
ghost.exe+C7C08: 4C 89 A6 B8 88 00 00  - mov [rsi+000088B8],r12
// ---------- INJECTING HERE ----------
ghost.exe+C7C0F: 4C 89 A6 68 4E 02 00  - mov [rsi+00024E68],r12
// ---------- DONE INJECTING  ----------
ghost.exe+C7C16: 4C 89 A6 18 D4 00 00  - mov [rsi+0000D418],r12
ghost.exe+C7C1D: 4C 89 A6 80 4E 02 00  - mov [rsi+00024E80],r12
ghost.exe+C7C24: E8 17 C4 00 00        - call ghost.exe+D4040
ghost.exe+C7C29: 84 C0                 - test al,al
ghost.exe+C7C2B: 48 8B CE              - mov rcx,rsi
ghost.exe+C7C2E: 48 8B 06              - mov rax,[rsi]
ghost.exe+C7C31: 74 04                 - je ghost.exe+C7C37
ghost.exe+C7C33: 33 D2                 - xor edx,edx
ghost.exe+C7C35: EB 02                 - jmp ghost.exe+C7C39
ghost.exe+C7C37: B2 01                 - mov dl,01
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>22</ID>
      <Description>"Unlimited Health"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : ghost.exe
  Version: 
  Date   : 2022-12-28
  Author : seneeki

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(health,ghost.exe,F3 0F 5C C6 F3 0F 11 83 60 B8 00 00) // should be unique
registersymbol(health)
health:
  nop 4
[DISABLE]

health:
  db F3 0F 5C C6

unregistersymbol(*)


{
// ORIGINAL CODE - INJECTION POINT: ghost.exe+CE8DE

ghost.exe+CE8AA: A8 02                    - test al,02
ghost.exe+CE8AC: 74 08                    - je ghost.exe+CE8B6
ghost.exe+CE8AE: F3 0F 59 35 42 F2 CF 00  - mulss xmm6,[ghost.exe+DCDAF8]
ghost.exe+CE8B6: F3 0F 10 93 60 B8 00 00  - movss xmm2,[rbx+0000B860]
ghost.exe+CE8BE: F3 41 0F 5C D0           - subss xmm2,xmm8
ghost.exe+CE8C3: F3 0F 5D D6              - minss xmm2,xmm6
ghost.exe+CE8C7: 48 8B D3                 - mov rdx,rbx
ghost.exe+CE8CA: 48 8B 0D AF 0D D0 00     - mov rcx,[ghost.exe+DCF680]
ghost.exe+CE8D1: E8 FA 8A 12 00           - call ghost.exe+1F73D0
ghost.exe+CE8D6: F3 0F 10 83 60 B8 00 00  - movss xmm0,[rbx+0000B860]
// ---------- INJECTING HERE ----------
ghost.exe+CE8DE: F3 0F 5C C6              - subss xmm0,xmm6
// ---------- DONE INJECTING  ----------
ghost.exe+CE8E2: F3 0F 11 83 60 B8 00 00  - movss [rbx+0000B860],xmm0
ghost.exe+CE8EA: 48 8B 8B 50 B5 00 00     - mov rcx,[rbx+0000B550]
ghost.exe+CE8F1: 48 85 C9                 - test rcx,rcx
ghost.exe+CE8F4: 74 44                    - je ghost.exe+CE93A
ghost.exe+CE8F6: F3 0F 10 47 20           - movss xmm0,[rdi+20]
ghost.exe+CE8FB: 0F 2F C7                 - comiss xmm0,xmm7
ghost.exe+CE8FE: 76 3A                    - jna ghost.exe+CE93A
ghost.exe+CE900: 48 8B 57 50              - mov rdx,[rdi+50]
ghost.exe+CE904: 48 85 D2                 - test rdx,rdx
ghost.exe+CE907: 74 06                    - je ghost.exe+CE90F
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry>
      <Description>Change of jb ghost.exe+E9989</Description>
      <AddressString>ghost.exe+E94D7</AddressString>
      <Before>
        <Byte>93</Byte>
        <Byte>28</Byte>
        <Byte>4E</Byte>
        <Byte>02</Byte>
        <Byte>00</Byte>
      </Before>
      <Actual>
        <Byte>0F</Byte>
        <Byte>82</Byte>
        <Byte>AC</Byte>
        <Byte>04</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>45</Byte>
        <Byte>33</Byte>
        <Byte>C0</Byte>
        <Byte>8D</Byte>
        <Byte>50</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Change of subss xmm0,xmm6</Description>
      <AddressString>ghost.exe+CE8DE</AddressString>
      <Before>
        <Byte>83</Byte>
        <Byte>60</Byte>
        <Byte>B8</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Before>
      <Actual>
        <Byte>F3</Byte>
        <Byte>0F</Byte>
        <Byte>5C</Byte>
        <Byte>C6</Byte>
      </Actual>
      <After>
        <Byte>F3</Byte>
        <Byte>0F</Byte>
        <Byte>11</Byte>
        <Byte>83</Byte>
        <Byte>60</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols/>
</CheatTable>
