<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>114982</ID>
      <Description>"&lt;=== Attach to process  and activate mono"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <Color>0000FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end
  if(getCEVersion() &lt; 7.4) then
    ShowMessage('Warning! CE version should be 7.4 or above')
  end

OpenProcess("ElmarionLostTemple.exe")
  if(process == nil) then
    ShowMessage('The process is NOT found!')
  end

LaunchMonoDataCollector()
{$asm}
// LuaCall(function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel4.Visible    = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true))



[DISABLE]
 
 
// LuaCall(cycleFullCompact(nil,false))
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>22</ID>
          <Description>"Get 500 XP each kill"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscan(experience,03 4D 10 89 88 F0 00 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  mov [ebp+10],#500
code:
  add ecx,[ebp+10]
  mov [eax+000000F0],ecx
  jmp return

experience:
  jmp newmem
  nop 4
return:
registersymbol(experience)

[DISABLE]

experience:
  db 03 4D 10 89 88 F0 00 00 00

unregistersymbol(experience)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: PlayerStats:addExperience+f

Player:addExperienceNum+1ba: 68 4B 01 00 00     - push 0000014B
Player:addExperienceNum+1bf: E8 CC 3E 07 D5     - call 04671100
2F5FD234: 68 E0 C0 DE 1C     - push 1CDEC0E0
2F5FD239: E9 C2 2E 07 D5     - jmp 04670100
2F5FD23E: 00 00              - add [eax],al
PlayerStats:addExperience: 55                 - push ebp
PlayerStats:addExperience+1: 8B EC              - mov ebp,esp
PlayerStats:addExperience+3: 83 EC 18           - sub esp,18
PlayerStats:addExperience+6: 8B 45 08           - mov eax,[ebp+08]
PlayerStats:addExperience+9: 8B 88 F0 00 00 00  - mov ecx,[eax+000000F0]
// ---------- INJECTING HERE ----------
PlayerStats:addExperience+f: 03 4D 10           - add ecx,[ebp+10]
// ---------- DONE INJECTING  ----------
PlayerStats:addExperience+12: 89 88 F0 00 00 00  - mov [eax+000000F0],ecx
PlayerStats:addExperience+18: 8B 4D 0C           - mov ecx,[ebp+0C]
PlayerStats:addExperience+1b: 89 4C 24 04        - mov [esp+04],ecx
PlayerStats:addExperience+1f: 89 04 24           - mov [esp],eax
PlayerStats:addExperience+22: 90                 - nop 
PlayerStats:addExperience+23: E8 F0 4E EE FF     - call PlayerStats:checkExperience
PlayerStats:addExperience+28: C9                 - leave 
PlayerStats:addExperience+29: C3                 - ret 
2F5FD26A: 00 00              - add [eax],al
2F5FD26C: 00 00              - add [eax],al
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>1</ID>
          <Description>"always get 100 gold when finding or spending gold"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscan(gold,03 C1 89 87 90 00 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  mov ecx,#100
code:
  add eax,ecx
  mov [edi+00000090],eax
  jmp return

gold:
  jmp newmem
  nop 3
return:
registersymbol(gold)

[DISABLE]

gold:
  db 03 C1 89 87 90 00 00 00

unregistersymbol(gold)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Player:addMoney+15

2F56B0B6: 00 00              - add [eax],al
Player:addMoney: 55                 - push ebp
Player:addMoney+1: 8B EC              - mov ebp,esp
Player:addMoney+3: 53                 - push ebx
Player:addMoney+4: 57                 - push edi
Player:addMoney+5: 56                 - push esi
Player:addMoney+6: 83 EC 4C           - sub esp,4C
Player:addMoney+9: 8B 7D 08           - mov edi,[ebp+08]
Player:addMoney+c: 8B 87 90 00 00 00  - mov eax,[edi+00000090]
Player:addMoney+12: 8B 4D 0C           - mov ecx,[ebp+0C]
// ---------- INJECTING HERE ----------
Player:addMoney+15: 03 C1              - add eax,ecx
// ---------- DONE INJECTING  ----------
Player:addMoney+17: 89 87 90 00 00 00  - mov [edi+00000090],eax
Player:addMoney+1d: 8B 05 A0 6E 7F 09  - mov eax,[097F6EA0]
Player:addMoney+23: 8B 80 44 01 00 00  - mov eax,[eax+00000144]
Player:addMoney+29: 89 45 DC           - mov [ebp-24],eax
Player:addMoney+2c: 85 FF              - test edi,edi
Player:addMoney+2e: 0F 84 C9 01 00 00  - je Player:addMoney+1fd
Player:addMoney+34: 8D 87 90 00 00 00  - lea eax,[edi+00000090]
Player:addMoney+3a: 89 04 24           - mov [esp],eax
Player:addMoney+3d: 8B C0              - mov eax,eax
Player:addMoney+3f: E8 DC A9 E9 FF     - call System.Int32:ToString
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>115005</ID>
          <Description>"GodMode"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
//aobscan(godmode,D9 9E B8 00 00 00 D9 45 DC D9 EE DF F1) // should be unique
aobscanregion(godmode, CharacterStats:TakeDamage+100, CharacterStats:TakeDamage+600, D9 9E B8 00 00 00 D9 45) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(value)

newmem:
  push eax
  mov eax,[esi+c]
  cmp word ptr[eax+c], 'p'
  jne code
  cmp word ptr[eax+e], 'l'
  jne code
  cmp word ptr[eax+10], 'a'
  jne code
  cmp word ptr[eax+12], 'y'
  jne code
  cmp word ptr[eax+14], 'e'
  jne code
  cmp word ptr[eax+16], 'r'
  jne code
  // if we get here, it's a party member
  // so let's fill ST(0) with enough Hitpoints
  mov eax,[esi+18]
  fstp st(0)  // just for correcting the stack, thanks EX0R!
  fld dword ptr [eax+c]
code:
  fstp dword ptr [esi+000000B8]
  pop eax
  jmp return

value:
   dd (float)9999.0

godmode:
  jmp newmem
  nop
return:
registersymbol(godmode)

[DISABLE]

godmode:
  db D9 9E B8 00 00 00

unregistersymbol(godmode)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: CharacterStats:TakeDamage+5f2

CharacterStats:TakeDamage+5cc: D9 86 B8 00 00 00  - fld dword ptr [esi+000000B8]
CharacterStats:TakeDamage+5d2: D9 45 DC           - fld dword ptr [ebp-24]
CharacterStats:TakeDamage+5d5: D9 05 F8 92 6D 90  - fld dword ptr [906D92F8]
CharacterStats:TakeDamage+5db: DE F9              - fdivp st(1),st(0)
CharacterStats:TakeDamage+5dd: DE E9              - fsubp st(1),st(0)
CharacterStats:TakeDamage+5df: D9 9E B8 00 00 00  - fstp dword ptr [esi+000000B8]
CharacterStats:TakeDamage+5e5: EB 11              - jmp CharacterStats:TakeDamage+5f8
CharacterStats:TakeDamage+5e7: D9 86 B8 00 00 00  - fld dword ptr [esi+000000B8]
CharacterStats:TakeDamage+5ed: D9 45 DC           - fld dword ptr [ebp-24]
CharacterStats:TakeDamage+5f0: DE E9              - fsubp st(1),st(0)
// ---------- INJECTING HERE ----------
CharacterStats:TakeDamage+5f2: D9 9E B8 00 00 00  - fstp dword ptr [esi+000000B8]
// ---------- DONE INJECTING  ----------
CharacterStats:TakeDamage+5f8: D9 45 DC           - fld dword ptr [ebp-24]
CharacterStats:TakeDamage+5fb: D9 EE              - fldz
CharacterStats:TakeDamage+5fd: DF F1              - fcomip st(0),st(1)
CharacterStats:TakeDamage+5ff: DD D8              - fstp st(0)
CharacterStats:TakeDamage+601: 7A 02              - jp CharacterStats:TakeDamage+605
CharacterStats:TakeDamage+603: 74 1C              - je CharacterStats:TakeDamage+621
CharacterStats:TakeDamage+605: 8B 86 AC 00 00 00  - mov eax,[esi+000000AC]
CharacterStats:TakeDamage+60b: 85 C0              - test eax,eax
CharacterStats:TakeDamage+60d: 74 12              - je CharacterStats:TakeDamage+621
CharacterStats:TakeDamage+60f: 8B 86 AC 00 00 00  - mov eax,[esi+000000AC]
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>25</ID>
          <Description>"Don't spend mana when casting"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,CharacterStats:TakeMana)
define(bytes,55)

[ENABLE]
assert(address,bytes)
address:
  ret

[DISABLE]

address:
  db bytes
  // push ebp

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: CharacterStats:TakeMana

PlayerHero:StatsChanged+4cc: 5F                 - pop edi
PlayerHero:StatsChanged+4cd: C9                 - leave 
PlayerHero:StatsChanged+4ce: C3                 - ret 
2F5A608F: 00 68 38           - add [eax+38],ch
2F5A6092: D4 EE              - aam -12
2F5A6094: 1C E9              - sbb al,-17
2F5A6096: 66 A0 0C D5 00 00  - mov al,[0000D50C]
2F5A609C: 68 E0 D1 EE 1C     - push 1CEED1E0
2F5A60A1: E9 5A A0 0C D5     - jmp 04670100
2F5A60A6: 00 00              - add [eax],al
// ---------- INJECTING HERE ----------
CharacterStats:TakeMana: 55                 - push ebp
// ---------- DONE INJECTING  ----------
CharacterStats:TakeMana+1: 8B EC              - mov ebp,esp
CharacterStats:TakeMana+3: 56                 - push esi
CharacterStats:TakeMana+4: 83 EC 34           - sub esp,34
CharacterStats:TakeMana+7: 8B 75 08           - mov esi,[ebp+08]
CharacterStats:TakeMana+a: D9 86 C0 00 00 00  - fld dword ptr [esi+000000C0]
CharacterStats:TakeMana+10: D9 9E C4 00 00 00  - fstp dword ptr [esi+000000C4]
CharacterStats:TakeMana+16: D9 86 C0 00 00 00  - fld dword ptr [esi+000000C0]
CharacterStats:TakeMana+1c: 8B 45 0C           - mov eax,[ebp+0C]
CharacterStats:TakeMana+1f: 50                 - push eax
CharacterStats:TakeMana+20: DB 04 24           - fild dword ptr [esp]
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>28</ID>
          <Description>"===== use on demand ====="</Description>
          <Color>0000FF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>17</ID>
              <Description>"GodMode for ALL, including enemies"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>define(address,CharacterStats:TakeDamage)
define(bytes,55)

[ENABLE]
assert(address,bytes)

address:
  ret

[DISABLE]
address:
  db bytes
  // push ebp

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: CharacterStats:TakeDamage

2F5FB3DD: E9 1E 4D 07 D5  - jmp 04670100
2F5FB3E2: 00 00           - add [eax],al
2F5FB3E4: 68 28 C3 DE 1C  - push 1CDEC328
2F5FB3E9: E9 12 4D 07 D5  - jmp 04670100
2F5FB3EE: 00 00           - add [eax],al
2F5FB3F0: 68 80 72 F5 1C  - push 1CF57280
2F5FB3F5: E9 06 4D 07 D5  - jmp 04670100
2F5FB3FA: 00 00           - add [eax],al
2F5FB3FC: 00 00           - add [eax],al
2F5FB3FE: 00 00           - add [eax],al
// ---------- INJECTING HERE ----------
CharacterStats:TakeDamage: 55              - push ebp
// ---------- DONE INJECTING  ----------
CharacterStats:TakeDamage+1: 8B EC           - mov ebp,esp
CharacterStats:TakeDamage+3: 53              - push ebx
CharacterStats:TakeDamage+4: 57              - push edi
CharacterStats:TakeDamage+5: 56              - push esi
CharacterStats:TakeDamage+6: 83 EC 5C        - sub esp,5C
CharacterStats:TakeDamage+9: 8B 75 08        - mov esi,[ebp+08]
CharacterStats:TakeDamage+c: 8B 7D 0C        - mov edi,[ebp+0C]
CharacterStats:TakeDamage+f: D9 EE           - fldz 
CharacterStats:TakeDamage+11: D9 5D E4        - fstp dword ptr [ebp-1C]
CharacterStats:TakeDamage+14: D9 EE           - fldz 
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>19</ID>
              <Description>"Don't spend character points at levelup"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>define(address,PlayerStats:changeStat+5d)
define(bytes,2B C1)

[ENABLE]
assert(address,bytes)

address:
  nop 2

[DISABLE]
address:
  db bytes
  // sub eax,ecx

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: PlayerStats:changeStat+5d

PlayerStats:changeStat+2d: 89 4C 24 0C              - mov [esp+0C],ecx
PlayerStats:changeStat+31: C7 44 24 08 78 CF 14 7F  - mov [esp+08],7F14CF78
PlayerStats:changeStat+39: 89 44 24 04              - mov [esp+04],eax
PlayerStats:changeStat+3d: C7 04 24 E8 ED 3E 7F     - mov [esp],7F3EEDE8
PlayerStats:changeStat+44: 8D 6D 00                 - lea ebp,[ebp+00]
PlayerStats:changeStat+47: E8 8C C2 F6 FF           - call System.String:Concat
PlayerStats:changeStat+4c: 89 04 24                 - mov [esp],eax
PlayerStats:changeStat+4f: E8 3C 6B 90 F9           - call UnityEngine.Debug:Log
PlayerStats:changeStat+54: 8B 87 08 01 00 00        - mov eax,[edi+00000108]
PlayerStats:changeStat+5a: 8B 4D 10                 - mov ecx,[ebp+10]
// ---------- INJECTING HERE ----------
PlayerStats:changeStat+5d: 2B C1                    - sub eax,ecx
// ---------- DONE INJECTING  ----------
PlayerStats:changeStat+5f: 89 87 08 01 00 00        - mov [edi+00000108],eax
PlayerStats:changeStat+65: 8B 45 0C                 - mov eax,[ebp+0C]
PlayerStats:changeStat+68: 85 C0                    - test eax,eax
PlayerStats:changeStat+6a: 75 1B                    - jne PlayerStats:changeStat+87
PlayerStats:changeStat+6c: 8B 47 20                 - mov eax,[edi+20]
PlayerStats:changeStat+6f: D9 40 0C                 - fld dword ptr [eax+0C]
PlayerStats:changeStat+72: 8B 4D 10                 - mov ecx,[ebp+10]
PlayerStats:changeStat+75: 51                       - push ecx
PlayerStats:changeStat+76: DB 04 24                 - fild dword ptr [esp]
PlayerStats:changeStat+79: D9 1C 24                 - fstp dword ptr [esp]
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>27</ID>
              <Description>"Don't spend Skill Points when increasing a Spell"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>define(address,SkillManager:setSkillLevel+13a)
define(bytes,48)

[ENABLE]
assert(address,bytes)
address:
  nop

[DISABLE]

address:
  db bytes
  // dec eax

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SkillManager:setSkillLevel+13a

SkillManager:setSkillLevel+116: 89 04 24           - mov [esp],eax
SkillManager:setSkillLevel+119: 8B C0              - mov eax,eax
SkillManager:setSkillLevel+11b: E8 F8 00 DE FF     - call System.Int32:ToString
SkillManager:setSkillLevel+120: 8B C8              - mov ecx,eax
SkillManager:setSkillLevel+122: 8B 45 E4           - mov eax,[ebp-1C]
SkillManager:setSkillLevel+125: 89 4C 24 04        - mov [esp+04],ecx
SkillManager:setSkillLevel+129: 89 04 24           - mov [esp],eax
SkillManager:setSkillLevel+12c: 8B 00              - mov eax,[eax]
SkillManager:setSkillLevel+12e: FF 90 74 01 00 00  - call dword ptr [eax+00000174]
SkillManager:setSkillLevel+134: 8B 86 80 00 00 00  - mov eax,[esi+00000080]
// ---------- INJECTING HERE ----------
SkillManager:setSkillLevel+13a: 48                 - dec eax
// ---------- DONE INJECTING  ----------
SkillManager:setSkillLevel+13b: 89 86 80 00 00 00  - mov [esi+00000080],eax
SkillManager:setSkillLevel+141: 8B 46 24           - mov eax,[esi+24]
SkillManager:setSkillLevel+144: 89 45 E8           - mov [ebp-18],eax
SkillManager:setSkillLevel+147: 85 F6              - test esi,esi
SkillManager:setSkillLevel+149: 0F 84 E8 03 00 00  - je SkillManager:setSkillLevel+537
SkillManager:setSkillLevel+14f: 8D 86 80 00 00 00  - lea eax,[esi+00000080]
SkillManager:setSkillLevel+155: 89 04 24           - mov [esp],eax
SkillManager:setSkillLevel+158: 8D 6D 00           - lea ebp,[ebp+00]
SkillManager:setSkillLevel+15b: E8 B8 00 DE FF     - call System.Int32:ToString
SkillManager:setSkillLevel+160: 8B C8              - mov ecx,eax
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>115001</ID>
              <Description>"Get Unity Coords"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
aobscanmodule(coord2,UnityPlayer.dll,89 86 E0 00 00 00 8B 41 14) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(coordinates)

newmem:
  mov [coordinates],esi
code:
  mov [esi+000000E0],eax
  jmp return

coordinates:
  dd 0

coord2:
  jmp newmem
  nop
return:
registersymbol(coordinates)
registersymbol(coord2)

[DISABLE]

coord2:
  db 89 86 E0 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: UnityPlayer.dll+E95FEF

UnityPlayer.dll+E95FC6: 8B 4D 08           - mov ecx,[ebp+08]
UnityPlayer.dll+E95FC9: 8B 01              - mov eax,[ecx]
UnityPlayer.dll+E95FCB: 89 86 D0 00 00 00  - mov [esi+000000D0],eax
UnityPlayer.dll+E95FD1: 8B 41 04           - mov eax,[ecx+04]
UnityPlayer.dll+E95FD4: 89 86 D4 00 00 00  - mov [esi+000000D4],eax
UnityPlayer.dll+E95FDA: 8B 41 08           - mov eax,[ecx+08]
UnityPlayer.dll+E95FDD: 89 86 D8 00 00 00  - mov [esi+000000D8],eax
UnityPlayer.dll+E95FE3: 8B 41 0C           - mov eax,[ecx+0C]
UnityPlayer.dll+E95FE6: 89 86 DC 00 00 00  - mov [esi+000000DC],eax
UnityPlayer.dll+E95FEC: 8B 41 10           - mov eax,[ecx+10]
// ---------- INJECTING HERE ----------
UnityPlayer.dll+E95FEF: 89 86 E0 00 00 00  - mov [esi+000000E0],eax
// ---------- DONE INJECTING  ----------
UnityPlayer.dll+E95FF5: 8B 41 14           - mov eax,[ecx+14]
UnityPlayer.dll+E95FF8: 89 86 E4 00 00 00  - mov [esi+000000E4],eax
UnityPlayer.dll+E95FFE: 8B 41 18           - mov eax,[ecx+18]
UnityPlayer.dll+E96001: 89 86 E8 00 00 00  - mov [esi+000000E8],eax
UnityPlayer.dll+E96007: 8B 46 04           - mov eax,[esi+04]
UnityPlayer.dll+E9600A: C1 E8 1E           - shr eax,1E
UnityPlayer.dll+E9600D: 83 F8 03           - cmp eax,03
UnityPlayer.dll+E96010: 74 1E              - je UnityPlayer.dll+E96030
UnityPlayer.dll+E96012: 83 F8 02           - cmp eax,02
UnityPlayer.dll+E96015: 75 0B              - jne UnityPlayer.dll+E96022
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>115000</ID>
                  <Description>"X"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>coordinates</Address>
                  <Offsets>
                    <Offset>e0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>115003</ID>
                  <Description>"Y"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>coordinates</Address>
                  <Offsets>
                    <Offset>e8</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>115002</ID>
                  <Description>"Z"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>coordinates</Address>
                  <Offsets>
                    <Offset>f0</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>20</ID>
      <Description>"Debug"</Description>
      <Options moHideChildren="1"/>
      <Color>C0C0C0</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>2</ID>
          <Description>"SuperJump"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,Jump:InitJump+68)
define(bytes,C6 47 3C 01)

[ENABLE]
assert(address,bytes)
address:
  nop 4

[DISABLE]
address:
  db bytes
  // mov byte ptr [edi+3C],01

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Jump:InitJump+68

Jump:InitJump+41: 39 00              - cmp [eax],eax
Jump:InitJump+43: E8 3C F9 87 F9     - call 28F0EB1C
Jump:InitJump+48: 83 EC 04           - sub esp,04
Jump:InitJump+4b: 8D 47 24           - lea eax,[edi+24]
Jump:InitJump+4e: 8B 8D 00 FF FF FF  - mov ecx,[ebp-00000100]
Jump:InitJump+54: 89 08              - mov [eax],ecx
Jump:InitJump+56: 8B 8D 04 FF FF FF  - mov ecx,[ebp-000000FC]
Jump:InitJump+5c: 89 48 04           - mov [eax+04],ecx
Jump:InitJump+5f: 8B 8D 08 FF FF FF  - mov ecx,[ebp-000000F8]
Jump:InitJump+65: 89 48 08           - mov [eax+08],ecx
// ---------- INJECTING HERE ----------
Jump:InitJump+68: C6 47 3C 01        - mov byte ptr [edi+3C],01
// ---------- DONE INJECTING  ----------
Jump:InitJump+6c: 8D 47 18           - lea eax,[edi+18]
Jump:InitJump+6f: 8B 08              - mov ecx,[eax]
Jump:InitJump+71: 89 8D 0C FF FF FF  - mov [ebp-000000F4],ecx
Jump:InitJump+77: 8B 48 04           - mov ecx,[eax+04]
Jump:InitJump+7a: 89 8D 10 FF FF FF  - mov [ebp-000000F0],ecx
Jump:InitJump+80: 8B 40 08           - mov eax,[eax+08]
Jump:InitJump+83: 89 85 14 FF FF FF  - mov [ebp-000000EC],eax
Jump:InitJump+89: 89 3C 24           - mov [esp],edi
Jump:InitJump+8c: 8D 6D 00           - lea ebp,[ebp+00]
Jump:InitJump+8f: E8 D4 F3 85 F9     - call 28EEE600
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>114983</ID>
          <Description>"GodMode and One-Hit-Kill"</Description>
          <Options moHideChildren="1" moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanmodule(health,GameAssembly.dll,89 43 28 48 8B 43 70 48 85 C0 74 13 4C 8B 48 28) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(godmode)
label(onehit)
label(godmode_on)
label(onehit_on)


newmem:
  cmp [rbx+f0],1              // check if it's us
  je godmode                  // if so, see if we want to be invulnerable
  jmp onehit                  // if it's not us, see if we want one-hit-kills
  jmp code

godmode:
  cmp byte ptr [godmode_on],1 // check if godmode-box is activated
  jne code                    // if not, back to the normal code
  mov eax,#9999               // fill up life
  jmp code                    // and go back to the normal code

onehit:
  cmp byte ptr [onehit_on],1  // check if one-hit-kill is activated
  jne code                    // if not, back to the normal code
  mov eax,#0                  // set the new amount of enemys life to zero

code:
  mov [rbx+28],eax
  mov rax,[rbx+70]
  test rax,rax
  je GameAssembly.dll+1B6B183
  mov r9,[rax+28]
  jmp return

godmode_on:
  db 0
onehit_on:
  db 0


health:
  jmp far newmem
  nop 2
return:
registersymbol(health godmode_on onehit_on)

[DISABLE]

health:
  db 89 43 28 48 8B 43 70 48 85 C0 74 13 4C 8B 48 28

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+1B6B164

GameAssembly.dll+1B6B13E: 48 8B 0D E3 EC 6B 00     - mov rcx,[GameAssembly.dll+2229E28]
GameAssembly.dll+1B6B145: 8B F0                    - mov esi,eax
GameAssembly.dll+1B6B147: 83 B9 E0 00 00 00 00     - cmp dword ptr [rcx+000000E0],00
GameAssembly.dll+1B6B14E: 75 05                    - jne GameAssembly.dll+1B6B155
GameAssembly.dll+1B6B150: E8 4B 37 66 FE           - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+1B6B155: 45 33 C0                 - xor r8d,r8d
GameAssembly.dll+1B6B158: 8B D6                    - mov edx,esi
GameAssembly.dll+1B6B15A: 8B CF                    - mov ecx,edi
GameAssembly.dll+1B6B15C: E8 EF A7 52 FF           - call System.Math.Min
GameAssembly.dll+1B6B161: 44 8B C0                 - mov r8d,eax
// ---------- INJECTING HERE ----------
GameAssembly.dll+1B6B164: 89 43 28                 - mov [rbx+28],eax
// ---------- DONE INJECTING  ----------
GameAssembly.dll+1B6B167: 48 8B 43 70              - mov rax,[rbx+70]
GameAssembly.dll+1B6B16B: 48 85 C0                 - test rax,rax
GameAssembly.dll+1B6B16E: 74 13                    - je GameAssembly.dll+1B6B183
GameAssembly.dll+1B6B170: 4C 8B 48 28              - mov r9,[rax+28]
GameAssembly.dll+1B6B174: 44 2B C5                 - sub r8d,ebp
GameAssembly.dll+1B6B177: 48 8B 48 40              - mov rcx,[rax+40]
GameAssembly.dll+1B6B17B: BA 0E 00 00 00           - mov edx,0000000E
GameAssembly.dll+1B6B180: FF 50 18                 - call qword ptr [rax+18]
GameAssembly.dll+1B6B183: 48 8D 4B 78              - lea rcx,[rbx+78]
GameAssembly.dll+1B6B187: 48 C7 43 78 00 00 00 00  - mov qword ptr [rbx+78],00000000
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>114985</ID>
              <Description>"GodMode"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
godmode_on:
  db 1
[DISABLE]
godmode_on:
  db 0

</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>114984</ID>
              <Description>"OneHit Kill"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
onehit_on:
  db 1
[DISABLE]
onehit_on:
  db 0
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <Structures StructVersion="2">
    <Structure Name="String" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
      <Elements>
        <Element Offset="8" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000008" Description="Length" DisplayMethod="unsigned integer"/>
        <Element Offset="12" Vartype="Unicode String" Bytesize="128" OffsetHex="0000000C" Description="Value" DisplayMethod="unsigned integer"/>
      </Elements>
    </Structure>
    <Structure Name="PlayerStats" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
      <Elements>
        <Element Offset="8" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000008" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
        <Element Offset="12" Vartype="Pointer" Bytesize="4" OffsetHex="0000000C" ChildStruct="String" Description="teamTag" DisplayMethod="unsigned integer"/>
        <Element Offset="16" Vartype="Pointer" Bytesize="4" OffsetHex="00000010" ChildStruct="String" Description="myName" DisplayMethod="unsigned integer"/>
        <Element Offset="20" Vartype="Pointer" Bytesize="4" OffsetHex="00000014" Description="level" DisplayMethod="unsigned integer"/>
        <Element Offset="24" Vartype="Pointer" Bytesize="4" OffsetHex="00000018" Description="maxHealth" DisplayMethod="unsigned integer">
          <Structure Name="Stat" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
            <Elements>
              <Element Offset="8" Vartype="Pointer" Bytesize="4" OffsetHex="00000008" Description="modifiers" DisplayMethod="unsigned integer"/>
              <Element Offset="12" Vartype="Float" Bytesize="4" OffsetHex="0000000C" Description="baseValue" DisplayMethod="unsigned integer"/>
              <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="type" DisplayMethod="unsigned integer"/>
            </Elements>
          </Structure>
        </Element>
        <Element Offset="28" Vartype="Pointer" Bytesize="4" OffsetHex="0000001C" Description="maxMana" DisplayMethod="unsigned integer"/>
        <Element Offset="32" Vartype="Pointer" Bytesize="4" OffsetHex="00000020" Description="strength" DisplayMethod="unsigned integer"/>
        <Element Offset="36" Vartype="Pointer" Bytesize="4" OffsetHex="00000024" Description="intellect" DisplayMethod="unsigned integer"/>
        <Element Offset="40" Vartype="Pointer" Bytesize="4" OffsetHex="00000028" Description="accuracy" DisplayMethod="unsigned integer"/>
        <Element Offset="44" Vartype="Pointer" Bytesize="4" OffsetHex="0000002C" Description="body" DisplayMethod="unsigned integer"/>
        <Element Offset="48" Vartype="Pointer" Bytesize="4" OffsetHex="00000030" Description="speed" DisplayMethod="unsigned integer"/>
        <Element Offset="52" Vartype="Pointer" Bytesize="4" OffsetHex="00000034" Description="luck" DisplayMethod="unsigned integer"/>
        <Element Offset="56" Vartype="Pointer" Bytesize="4" OffsetHex="00000038" Description="damage" DisplayMethod="unsigned integer"/>
        <Element Offset="60" Vartype="Pointer" Bytesize="4" OffsetHex="0000003C" Description="damage1Min" DisplayMethod="unsigned integer"/>
        <Element Offset="64" Vartype="Pointer" Bytesize="4" OffsetHex="00000040" Description="damage1Max" DisplayMethod="unsigned integer"/>
        <Element Offset="68" Vartype="Pointer" Bytesize="4" OffsetHex="00000044" Description="damage2Min" DisplayMethod="unsigned integer"/>
        <Element Offset="72" Vartype="Pointer" Bytesize="4" OffsetHex="00000048" Description="damage2Max" DisplayMethod="unsigned integer"/>
        <Element Offset="76" Vartype="Pointer" Bytesize="4" OffsetHex="0000004C" Description="damage3Min" DisplayMethod="unsigned integer"/>
        <Element Offset="80" Vartype="Pointer" Bytesize="4" OffsetHex="00000050" Description="damage3Max" DisplayMethod="unsigned integer"/>
        <Element Offset="84" Vartype="Pointer" Bytesize="4" OffsetHex="00000054" Description="attackSpeed" DisplayMethod="unsigned integer"/>
        <Element Offset="88" Vartype="Pointer" Bytesize="4" OffsetHex="00000058" Description="armor" DisplayMethod="unsigned integer"/>
        <Element Offset="92" Vartype="Pointer" Bytesize="4" OffsetHex="0000005C" Description="fireResist" DisplayMethod="unsigned integer"/>
        <Element Offset="96" Vartype="Pointer" Bytesize="4" OffsetHex="00000060" Description="iceResist" DisplayMethod="unsigned integer"/>
        <Element Offset="100" Vartype="Pointer" Bytesize="4" OffsetHex="00000064" Description="airResist" DisplayMethod="unsigned integer"/>
        <Element Offset="104" Vartype="Pointer" Bytesize="4" OffsetHex="00000068" Description="earthResist" DisplayMethod="unsigned integer"/>
        <Element Offset="108" Vartype="Pointer" Bytesize="4" OffsetHex="0000006C" Description="fireDamage" DisplayMethod="unsigned integer"/>
        <Element Offset="112" Vartype="Pointer" Bytesize="4" OffsetHex="00000070" Description="iceDamage" DisplayMethod="unsigned integer"/>
        <Element Offset="116" Vartype="Pointer" Bytesize="4" OffsetHex="00000074" Description="airDamage" DisplayMethod="unsigned integer"/>
        <Element Offset="120" Vartype="Pointer" Bytesize="4" OffsetHex="00000078" Description="earthDamage" DisplayMethod="unsigned integer"/>
        <Element Offset="124" Vartype="Pointer" Bytesize="4" OffsetHex="0000007C" Description="hpReg" DisplayMethod="unsigned integer"/>
        <Element Offset="128" Vartype="Pointer" Bytesize="4" OffsetHex="00000080" Description="manaReg" DisplayMethod="unsigned integer"/>
        <Element Offset="132" Vartype="Pointer" Bytesize="4" OffsetHex="00000084" Description="hpSteal" DisplayMethod="unsigned integer"/>
        <Element Offset="136" Vartype="Pointer" Bytesize="4" OffsetHex="00000088" Description="manaSteal" DisplayMethod="unsigned integer"/>
        <Element Offset="140" Vartype="Pointer" Bytesize="4" OffsetHex="0000008C" Description="frost" DisplayMethod="unsigned integer"/>
        <Element Offset="144" Vartype="Pointer" Bytesize="4" OffsetHex="00000090" Description="thorns" DisplayMethod="unsigned integer"/>
        <Element Offset="148" Vartype="Pointer" Bytesize="4" OffsetHex="00000094" Description="armorMax" DisplayMethod="unsigned integer"/>
        <Element Offset="152" Vartype="Pointer" Bytesize="4" OffsetHex="00000098" Description="fireResistMax" DisplayMethod="unsigned integer"/>
        <Element Offset="156" Vartype="Pointer" Bytesize="4" OffsetHex="0000009C" Description="iceResistMax" DisplayMethod="unsigned integer"/>
        <Element Offset="160" Vartype="Pointer" Bytesize="4" OffsetHex="000000A0" Description="airResistMax" DisplayMethod="unsigned integer"/>
        <Element Offset="164" Vartype="Pointer" Bytesize="4" OffsetHex="000000A4" Description="earthResistMax" DisplayMethod="unsigned integer"/>
        <Element Offset="168" Vartype="Pointer" Bytesize="4" OffsetHex="000000A8" Description="OnHealthReachedZero" DisplayMethod="unsigned integer"/>
        <Element Offset="172" Vartype="Pointer" Bytesize="4" OffsetHex="000000AC" Description="OnStatsChanged" DisplayMethod="unsigned integer"/>
        <Element Offset="176" Vartype="Pointer" Bytesize="4" OffsetHex="000000B0" Description="buffs" DisplayMethod="unsigned integer"/>
        <Element Offset="180" Vartype="Pointer" Bytesize="4" OffsetHex="000000B4" Description="curBuffEffect" DisplayMethod="unsigned integer"/>
        <Element Offset="184" Vartype="Float" Bytesize="4" OffsetHex="000000B8" Description="currentHealth" DisplayMethod="unsigned integer"/>
        <Element Offset="188" Vartype="Float" Bytesize="4" OffsetHex="000000BC" Description="oldHealth" DisplayMethod="unsigned integer"/>
        <Element Offset="192" Vartype="Float" Bytesize="4" OffsetHex="000000C0" Description="currentMana" DisplayMethod="unsigned integer"/>
        <Element Offset="196" Vartype="Float" Bytesize="4" OffsetHex="000000C4" Description="oldMana" DisplayMethod="unsigned integer"/>
        <Element Offset="200" Vartype="Float" Bytesize="4" OffsetHex="000000C8" Description="moveSpeed" DisplayMethod="unsigned integer"/>
        <Element Offset="204" Vartype="4 Bytes" Bytesize="4" OffsetHex="000000CC" Description="iceEnergy" DisplayMethod="unsigned integer"/>
        <Element Offset="208" Vartype="4 Bytes" Bytesize="4" OffsetHex="000000D0" Description="id" DisplayMethod="unsigned integer"/>
        <Element Offset="212" Vartype="Pointer" Bytesize="4" OffsetHex="000000D4" Description="allSkills" DisplayMethod="unsigned integer"/>
        <Element Offset="216" Vartype="Pointer" Bytesize="4" OffsetHex="000000D8" Description="vsUndead" DisplayMethod="unsigned integer"/>
        <Element Offset="220" Vartype="Pointer" Bytesize="4" OffsetHex="000000DC" Description="vsLife" DisplayMethod="unsigned integer"/>
        <Element Offset="224" Vartype="Pointer" Bytesize="4" OffsetHex="000000E0" Description="vsDemon" DisplayMethod="unsigned integer"/>
        <Element Offset="228" Vartype="Pointer" Bytesize="4" OffsetHex="000000E4" Description="statDesc" DisplayMethod="unsigned integer"/>
        <Element Offset="232" Vartype="Pointer" Bytesize="4" OffsetHex="000000E8" Description="statAboutName" DisplayMethod="unsigned integer"/>
        <Element Offset="236" Vartype="Pointer" Bytesize="4" OffsetHex="000000EC" Description="statAboutDesc" DisplayMethod="unsigned integer"/>
        <Element Offset="240" Vartype="4 Bytes" Bytesize="4" OffsetHex="000000F0" Description="currentExperience" DisplayMethod="unsigned integer"/>
        <Element Offset="244" Vartype="4 Bytes" Bytesize="4" OffsetHex="000000F4" Description="nextExperience" DisplayMethod="unsigned integer"/>
        <Element Offset="248" Vartype="Float" Bytesize="4" OffsetHex="000000F8" Description="dHealth" DisplayMethod="unsigned integer"/>
        <Element Offset="252" Vartype="Float" Bytesize="4" OffsetHex="000000FC" Description="dMana" DisplayMethod="unsigned integer"/>
        <Element Offset="256" Vartype="Float" Bytesize="4" OffsetHex="00000100" Description="dDamage" DisplayMethod="unsigned integer"/>
        <Element Offset="260" Vartype="Float" Bytesize="4" OffsetHex="00000104" Description="dAttackSpeed" DisplayMethod="unsigned integer"/>
        <Element Offset="264" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000108" Description="points" DisplayMethod="unsigned integer"/>
        <Element Offset="268" Vartype="4 Bytes" Bytesize="4" OffsetHex="0000010C" Description="DPOINTS" DisplayMethod="unsigned integer"/>
      </Elements>
    </Structure>
  </Structures>
</CheatTable>
