<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>15</ID>
      <Description>"Enable Console"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : eu5.exe
  Version: 1.0.5
  Date   : 2025-11-06
  Author : nigel11

  Allows console to be opened with ~ and allows all commands
}

[ENABLE]

aobscanmodule(ALLOWCMD,eu5.exe,00 00 75 07 32 C0 48 83 C4 28 C3 B0 01 48 83 C4 28)
//aobscanmodule(OPENCONSOLE,eu5.exe,80 3D F0 5D 91 04 00)
aobscanmodule(OPENCONSOLE, eu5.exe, 75 0D C6 81 D8 06 00 00 00)

ALLOWCMD+0B:
  xor al,al
  add rsp,28

//OPENCONSOLE:
//  db 90 90 90 90 90 90 90

OPENCONSOLE:
  db EB

return:
registersymbol(OPENCONSOLE)
registersymbol(ALLOWCMD)

[DISABLE]

//OPENCONSOLE:
//  db 80 3D F0 5D 91 04 00

ALLOWCMD+0B:
  db B0 01 48 83 C4 28

OPENCONSOLE:
  db 75

unregistersymbol(OPENCONSOLE)
unregistersymbol(ALLOWCMD)
{
// search string refs for console_edit
// ORIGINAL CODE - INJECTION POINT: 00007FF7E03FE550

00007FF7E03FE540 | 40:53                    | push rbx                                |
00007FF7E03FE542 | 48:83EC 30               | sub rsp,30                              |
00007FF7E03FE546 | 803D F05D9104 00         | cmp byte ptr ds:[7FF7E4D1433D],0        |
00007FF7E03FE54D | 48:8BD9                  | mov rbx,rcx                             |
&gt;&gt;00007FF7E03FE550 | 75 0D                    | jne eu5.7FF7E03FE55F                    |
00007FF7E03FE552 | C681 D8060000 00         | mov byte ptr ds:[rcx+6D8],0             |
00007FF7E03FE559 | 48:83C4 30               | add rsp,30                              |
00007FF7E03FE55D | 5B                       | pop rbx                                 |
00007FF7E03FE55E | C3                       | ret                                     |
00007FF7E03FE55F | 48:8B89 E0060000         | mov rcx,qword ptr ds:[rcx+6E0]          |
00007FF7E03FE566 | 48:85C9                  | test rcx,rcx                            |
00007FF7E03FE569 | 74 65                    | je eu5.7FF7E03FE5D0                     |
}
{
// string block_command
// ORIGINAL CODE - INJECTION POINT: eu5.exe+689FD1

eu5.exe+689FAD: 48 8B 01              - mov rax,[rcx]
eu5.exe+689FB0: FF 50 50              - call qword ptr [rax+50]
eu5.exe+689FB3: E8 F8 DF 38 01        - call eu5.exe+1A17FB0
eu5.exe+689FB8: 80 3D DF D1 A5 06 00  - cmp byte ptr [eu5.exe+70E719E],00
eu5.exe+689FBF: 75 09                 - jne eu5.exe+689FCA
eu5.exe+689FC1: 80 B8 32 01 00 00 00  - cmp byte ptr [rax+00000132],00
eu5.exe+689FC8: 75 07                 - jne eu5.exe+689FD1
eu5.exe+689FCA: 32 C0                 - xor al,al
eu5.exe+689FCC: 48 83 C4 28           - add rsp,28
eu5.exe+689FD0: C3                    - ret
// ---------- INJECTING HERE ----------
eu5.exe+689FD1: B0 01                 - mov al,01
// ---------- DONE INJECTING  ----------
eu5.exe+689FD3: 48 83 C4 28           - add rsp,28
eu5.exe+689FD7: C3                    - ret
eu5.exe+689FD8: CC                    - int 3
eu5.exe+689FD9: CC                    - int 3
eu5.exe+689FDA: CC                    - int 3
eu5.exe+689FDB: CC                    - int 3
eu5.exe+689FDC: CC                    - int 3
eu5.exe+689FDD: CC                    - int 3
eu5.exe+689FDE: CC                    - int 3
eu5.exe+689FDF: CC                    - int 3
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>18</ID>
      <Description>"Enable Achievements"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : eu5.exe
  Version: 1.0.3
  Date   : 2025-11-11
  Author : nigel11

  Enables debug achievements
}

[ENABLE]

aobscanmodule(injAchivementBase,eu5.exe,80 B9 34 01 00 00 00 75) // should be unique
alloc(memAchivementBase,$1000, injAchivementBase)
alloc(pAchivementBase,$16, injAchivementBase)

label(retAchivementBase)

memAchivementBase:
  mov [pAchivementBase],rcx
  mov byte ptr [rcx+00000134],01
  cmp byte ptr [rcx+00000134],00
  jmp retAchivementBase

injAchivementBase:
  jmp memAchivementBase
  nop 2
retAchivementBase:
registersymbol(injAchivementBase)
registersymbol(pAchivementBase)

[DISABLE]

injAchivementBase:
  db 80 B9 34 01 00 00 00

unregistersymbol(injAchivementBase)
unregistersymbol(pAchivementBase)
dealloc(memAchivementBase)
dealloc(pAchivementBase)

{
// ORIGINAL CODE - INJECTION POINT: DebugAchivement

eu5.exe+1A19077: CC                    - int 3 
eu5.exe+1A19078: CC                    - int 3 
eu5.exe+1A19079: CC                    - int 3 
eu5.exe+1A1907A: CC                    - int 3 
eu5.exe+1A1907B: CC                    - int 3 
eu5.exe+1A1907C: CC                    - int 3 
eu5.exe+1A1907D: CC                    - int 3 
eu5.exe+1A1907E: CC                    - int 3 
eu5.exe+1A1907F: CC                    - int 3 
eu5.exe+1A19080: 48 83 EC 28           - sub rsp,28
// ---------- INJECTING HERE ----------
DebugAchivement: 80 B9 34 01 00 00 00  - cmp byte ptr [rcx+00000134],00
// ---------- DONE INJECTING  ----------
eu5.exe+1A1908B: 75 43                 - jne eu5.exe+1A190D0
eu5.exe+1A1908D: 80 B9 39 01 00 00 00  - cmp byte ptr [rcx+00000139],00
eu5.exe+1A19094: 74 09                 - je eu5.exe+1A1909F
eu5.exe+1A19096: 80 B9 32 01 00 00 00  - cmp byte ptr [rcx+00000132],00
eu5.exe+1A1909D: 74 38                 - je eu5.exe+1A190D7
eu5.exe+1A1909F: 80 B9 33 01 00 00 00  - cmp byte ptr [rcx+00000133],00
eu5.exe+1A190A6: 74 2F                 - je eu5.exe+1A190D7
eu5.exe+1A190A8: 80 B9 30 01 00 00 00  - cmp byte ptr [rcx+00000130],00
eu5.exe+1A190AF: 74 26                 - je eu5.exe+1A190D7
eu5.exe+1A190B1: 80 B9 31 01 00 00 00  - cmp byte ptr [rcx+00000131],00
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>16</ID>
      <Description>"Debug Toggle"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : eu5.exe
  Version: 1.0.5
  Date   : 2025-11-11
  Author : nigel11

  Toggles debug mode
  If Aob fails debug address has possibly changed.
}

[ENABLE]
aobscanmodule(DebugAddress, eu5.exe, 803D 66F34306 00)
7FF7E4D1433D:
db 1

[DISABLE]
7FF7E4D1433D:
db 0

{
00007FF7DE8D4FCF | CC                       | int3                                    |
&gt;&gt;00007FF7DE8D4FD0 | 803D 66F34306 00         | cmp byte ptr ds:[7FF7E4D1433D],0        |
00007FF7DE8D4FD7 | 74 0B                    | je eu5.7FF7DE8D4FE4                     |
00007FF7DE8D4FD9 | 48:8B41 08               | mov rax,qword ptr ds:[rcx+8]            | rax:NVSDK_NGX_D3D12_Shutdown1+1C6F80
00007FF7DE8D4FDD | 8088 D50D0000 10         | or byte ptr ds:[rax+DD5],10             | rax+DD5:NVSDK_NGX_D3D12_Shutdown1+1C7D55
00007FF7DE8D4FE4 | C3                       | ret                                     |
00007FF7DE8D4FE5 | CC                       | int3                                    |
}

</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>12</ID>
      <Description>"Ironman Hook"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : eu5.exe
  Version: 1.0.3
  Date   : 2025-11-05
  Author : nigel11

  Set to 1 or 0 to enable/disable ironman
  achievements seem to work
  disable once address is found incase of game crashes
}

[ENABLE]

aobscanmodule(injIronmanHook,eu5.exe,44 38 B8 32 01 00 00)
alloc(newmem,32,injIronmanHook)
alloc(ptrIronman,8)

label(code)
label(return)


newmem:
  mov [ptrIronman],rax

code:
  cmp [rax+00000132],r15b
  jmp return

injIronmanHook:
  jmp newmem
  nop 2

return:
registersymbol(injIronmanHook)
registersymbol(ptrIronman)


[DISABLE]

injIronmanHook:
  db 44 38 B8 32 01 00 00

unregistersymbol(injIronmanHook)
dealloc(newmem)
//unregistersymbol(ptrIronman)
//dealloc(ptrIronman)

{
// ORIGINAL CODE - INJECTION POINT: eu5.exe+3692D9A

eu5.exe+3692D71: 48 89 9C 24 80 00 00 00  - mov [rsp+00000080],rbx
eu5.exe+3692D79: 48 8B 06                 - mov rax,[rsi]
eu5.exe+3692D7C: 48 8B CE                 - mov rcx,rsi
eu5.exe+3692D7F: FF 50 50                 - call qword ptr [rax+50]
eu5.exe+3692D82: 48 8B E8                 - mov rbp,rax
eu5.exe+3692D85: E8 56 61 37 FE           - call eu5.exe+1A08EE0
eu5.exe+3692D8A: 45 33 FF                 - xor r15d,r15d
eu5.exe+3692D8D: 41 8D 7F 06              - lea edi,[r15+06]
eu5.exe+3692D91: 44 38 3D 3A BF BE 03     - cmp [eu5.exe+727ECD2],r15b
eu5.exe+3692D98: 75 65                    - jne eu5.exe+3692DFF
// ---------- INJECTING HERE ----------
eu5.exe+3692D9A: 44 38 B8 32 01 00 00     - cmp [rax+00000132],r15b
// ---------- DONE INJECTING  ----------
eu5.exe+3692DA1: 74 5C                    - je eu5.exe+3692DFF
eu5.exe+3692DA3: 48 89 5C 24 78           - mov [rsp+78],rbx
eu5.exe+3692DA8: 8B 55 10                 - mov edx,[rbp+10]
eu5.exe+3692DAB: 48 8D 4C 24 78           - lea rcx,[rsp+78]
eu5.exe+3692DB0: E8 5B 48 35 FE           - call eu5.exe+19E7610
eu5.exe+3692DB5: 44 8B C0                 - mov r8d,eax
eu5.exe+3692DB8: 8B 55 18                 - mov edx,[rbp+18]
eu5.exe+3692DBB: 85 D2                    - test edx,edx
eu5.exe+3692DBD: 74 32                    - je eu5.exe+3692DF1
eu5.exe+3692DBF: 83 EA 01                 - sub edx,01
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>8</ID>
          <Description>"Ironman"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>ptrIronman</Address>
          <Offsets>
            <Offset>132</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>25</ID>
      <Description>"Extra Pointers"</Description>
      <Options moHideChildren="1"/>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>19</ID>
          <Description>"Achievements"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>pAchivementBase</Address>
          <Offsets>
            <Offset>134</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>20</ID>
          <Description>"Ironman"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>pAchivementBase</Address>
          <Offsets>
            <Offset>132</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>21</ID>
          <Description>"No description"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>pAchivementBase</Address>
          <Offsets>
            <Offset>133</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>22</ID>
          <Description>"No description"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>pAchivementBase</Address>
          <Offsets>
            <Offset>130</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>23</ID>
          <Description>"No description"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>pAchivementBase</Address>
          <Offsets>
            <Offset>131</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>24</ID>
          <Description>"No description"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>pAchivementBase</Address>
          <Offsets>
            <Offset>139</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>17</ID>
          <Description>"Debug Mode"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>7FF7E4D1433D</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
