24
"[X] <== Company Of Heroes 2 v4.0.0.23367 Steam Script 5.17"
FF0000
Auto Assembler Script
{
===========================================
Game Title : Company Of Heroes 2
Game Version : 4.0.0.23367 (steam)
Game Sponsor : Fennix102
Proces Name : RelicCoH2.exe
Script Version: 5.17
CE Version : 7.0
Release date : 05-Dec-2019
Author : Recifense
History:
27-Jun-13: First Release
28-Jun-13: Release for version 3.0.0.9704 (RLD)
01-Jul-13: Release for version 3.0.0.9720 (STEAM)
11-Jul-13: Release for version 3.0.0.9804 (STEAM)
30-Jul-13: Changed approach of player identification
30-Jul-13: Release for version 3.0.0.9945 (STEAM)
21-Aug-13: Release for version 3.0.0.10242 (STEAM)
22-Aug-13: Release for version 3.0.0.10317 (STEAM)
29-Aug-13: Release for version 3.0.0.10416 (STEAM) (Improved GM)
01-Sep-13: Release for version 3.0.0.10416 (STEAM) (AOB)
01-Mar-14: Release for version 3.0.0.12598 (STEAM)
26-Mar-14: Release for version 3.0.0.13006 (STEAM)
23-Jun-14: Release for version 3.0.0.14243 (STEAM) (AOB)(CE64)
24-Jul-14: Release for version 3.0.0.14641 (STEAM)
30-Oct-14: Release for version 3.0.0.16104 (STEAM)
30-Oct-14: Release for version 3.0.0.16116 (STEAM)
18-Nov-14: Release for version 3.0.0.16337 (STEAM) (AOB) +(prot bypass)
19-Nov-14: Release for version 3.0.0.16337 (STEAM) +(prot bypass )(s1.4)
30-Nov-14: Release for version 3.0.0.16337 (STEAM) +(prot bypass 2)(s2.0)
09-Dec-14: Release for version 3.0.0.16549 (STEAM)
09-Dec-14: Release for version 3.0.0.16569 (STEAM)
15-Dec-14: Release for version 3.0.0.16598 (STEAM) + CMD Cooldown (s3.0)
05-Feb-15: Release for version 3.0.0.17120 (STEAM)
31-Mar-15: Release for version 3.0.0.17580 (STEAM)
18-Apr-15: Release for version 3.0.0.17779 (STEAM)
24-Jun-15: Release for version 3.0.0.18664 (STEAM)
26-Jun-15: Release for version 3.0.0.18705 (STEAM)
02-Jul-15: Release for version 3.0.0.18741 (STEAM)
02-Jul-15: Release for version 3.0.0.18778 (STEAM)
21-Jul-15: Release for version 3.0.0.18993 (STEAM)
01-Aug-15: Release for version 3.0.0.19100 (STEAM)
03-Sep-15: Release for version 4.0.0.19533 (STEAM)
05-Sep-15: Release for version 4.0.0.19545 (STEAM)
06-Sep-15: Fix due to some crashes (s3.1)
18-Sep-15: Release for version 4.0.0.19654 (STEAM)
24-Sep-15: Release for version 4.0.0.19696 (STEAM)
17-Oct-15: Release for version 4.0.0.20042 (STEAM) (s3.2)
31-Oct-15: Release for version 4.0.0.20266 (STEAM) (s3.3)
05-Dec-15: Release for version 4.0.0.20489 (STEAM)
10-Dec-15: Release for version 4.0.0.20546 (STEAM)
17-Dec-15: Release for version 4.0.0.20589 (STEAM)
15-Jan-16: Release for version 4.0.0.20637 (STEAM)
28-Jan-16: Added Fast Reinforcement/Improvement/Construction (S4.0)
27-Feb-16: Release for version 4.0.0.20954 (STEAM)
09-Mar-16: Release for version 4.0.0.20998 (STEAM)
11-Mar-16: Release for version 4.0.0.21025 (STEAM) (no change at all)
07-Apr-16: Release for version 4.0.0.21132 (STEAM)
20-Apr-16: Release for version 4.0.0.21244 (STEAM)
17-May-16: Release for version 4.0.0.21375 (STEAM)
18-May-16: Release for version 4.0.0.21400 (STEAM)
28-May-16: Release for version 4.0.0.21412 (STEAM)
10-Jun-16: Release for version 4.0.0.21466 (STEAM)
21-Jun-16: Release for version 4.0.0.21512 (STEAM)
05-Jul-16: Release for version 4.0.0.21543 (STEAM)
29-Jul-16: Release for version 4.0.0.21563 (STEAM)
19-Aug-16: Release for version 4.0.0.21567 (STEAM)
05-Oct-16: Release for version 4.0.0.21603 (STEAM)
22-Dec-16: Release for version 4.0.0.21643 (STEAM) (CE66)(s4.1)
24-Dec-16: Release for version 4.0.0.21647 (STEAM) (back to CE65)(s4.2)
28-Mar-17: Release for version 4.0.0.21699 (STEAM) (s5.0)(new approach CRC)
30-Mar-17: Release for version 4.0.0.21701 (STEAM)
25-Apr-17: Release for version 4.0.0.21725 (STEAM)
18-Jul-17: Release for version 4.0.0.21729 (STEAM) semi-aob
19-Sep-17: Release for version 4.0.0.21737 (STEAM) (fMinValue)
12-Oct-17: Release for version 4.0.0.21748 (STEAM)
19-Dec-17: Release for version 4.0.0.21796 (STEAM)
17-May-18: Release for version 4.0.0.21947 (STEAM)
18-May-18: Release for version 4.0.0.21949 (STEAM)
29-May-18: Release for version 4.0.0.21956 (STEAM)
11-Jul-18: Release for version 4.0.0.21984 (STEAM)
26-Oct-18: Release for version 4.0.0.22063 (STEAM)
21-Nov-18: Release for version 4.0.0.22114 (STEAM)
12-Dec-18: Release for version 4.0.0.23028 (STEAM)(s5.4) (update 72)
14-Dec-18: Release for version 4.0.0.23033 (STEAM)(s5.5) (update 73)
07-Feb-19: Release for version 4.0.0.23076 (STEAM)(s5.6) (update 74)
05-May-19: Release for version 4.0.0.23166 (STEAM)(s5.7) (update 75)
14-Jun-19: Release for version 4.0.0.23192 (STEAM)(s5.8) (update 76)
20-Jun-19: Release for version 4.0.0.23204 (STEAM)(s5.9) (update 77)
06-Jul-19: Release for version 4.0.0.23219 (STEAM)(s5.10) (update 78)
10-Sep-19: Release for version 4.0.0.23292 (STEAM)(s5.11) (update 79)
13-Sep-19: Release for version 4.0.0.23299 (STEAM)(s5.12) (update 80)
26-Sep-19: Release for version 4.0.0.23305 (STEAM)(s5.13) (update 81)
11-Oct-19: Release for version 4.0.0.23310 (STEAM)(s5.14) (update 82)
25-Oct-19: Release for version 4.0.0.23313 (STEAM)(s5.15) (update 83)
01-Nov-19: Release for version 4.0.0.23330 (STEAM)(s5.16) (update 84)
05-Dec-19: Release for version 4.0.0.23367 (STEAM)(s5.17) (update 85)
Features:
- Minimum Resources:
- Manpower
- Munition
- Fuel
- Maximum Pop Used
- Quick Command Points
- God Mode
- Fast Cooldown
- Fast Reinforcement/Improvement
- Fast Construction
- Protection Bypass
- Protection Bypass 2
===========================================
}
//=========================================
// Checking CE version
{$lua}
if(getCEVersion() < 7.0) then
ShowMessage('Sorry. CE version should be 7.0 or above')
end
{$asm}
//=========================================
// Checking Selected Process
{$lua}
if(process == nil) then
ShowMessage('No process was selected')
elseif (process ~= "RelicCoH2.exe") then
ShowMessage('Error. Expected Process = RelicCoH2.exe')
end
{$asm}
//=========================================
{$lua}
-- monoAA_USEMONO(process,false)
if waitForPDB then --this way older CE versions are unaffected (By Dark Byte)
waitForPDB()
end
{$asm}
//=========================================
// Definitions
define(LUDO,"RelicCoH2.exe")
define(LUDOSTA,RelicCoH2.exe+0000e000)
define(LUDOEND,RelicCoH2.exe+016386d0)
{
define(MHPR,RelicCoH2.exe+00be7f70) //70=====
define(GDMD,RelicCoH2.exe+00e817e0) //70=====
define(GMD1,RelicCoH2.exe+00e80018) //70=====
define(MPID,RelicCoH2.exe+00180bca) //70=====
define(MGST,RelicCoH2.exe+0000e7c7) //70=====
define(GMD2,RelicCoH2.exe+00e82dd0) //70=====
define(GMD4,RelicCoH2.exe+00e82e60) //70=====
define(MSUN,RelicCoH2.exe+00f2913f) //70===== 2 1
define(MOCC,RelicCoH2.exe+00da9290) //70=====
define(MORI,RelicCoH2.exe+00f57791) //70=====
define(MOPC,RelicCoH2.exe+00e64f2b) //70=====
}
define(BCCK,RelicCoH2.exe+016386b2) //70===============
define(BCK1,RelicCoH2.exe+0082f281) //70===============
define(BCK2,RelicCoH2.exe+0082f1e0) //70===============
define(JBCC,RelicCoH2.exe+019a2b98) //70=#============= (MSVCR100.dll+1E80)(memcpy)
define(BGM2,RelicCoH2.exe+00de64ab) //70=============== Repair (sl)
define(RMHP,RelicCoH2.exe+00148de5) //70===============
//sl = AOBScan("8b 4c 24 4c 5b b0 01 5e 64 89 0d 00 00 00 00 83 c4 50 c3");
//sl = AOBScan("8B 7C 24 18 8B 4E 1C 50 57"); 3 3
//=========================================
define(ctCE70,(float)7.0)
define(ctMRES,(float)190.0) // Minimum Resource
//=========================================
[ENABLE]
//=========================================
//LuaCall(CheckVersion())
//=========================================
// Check if script is compatible to this game version
// If false the script will not be loaded
AOBScanModule(MHPR,$process,8b 81 b4 00 00 00 83 ec 08 85 c0 ?? ?? 8b 50 08 8d 48 08 8b 44 24)
AOBScanModule(GDMD,$process,83 ec 08 0f 57 db 56 8b f1 f3 0f 10 86 80 00 00 00 0f 2f c3 f3 0f)
AOBScanModule(GMD1,$process,f3 0f 11 41 3c ?? ?? f3 0f 11 49 3c f3 0f 10 81 80 00 00 00 f3 0f)
AOBScanModule(MPID,$process,89 17 89 47 04 e8 ?? ?? ?? ?? 8b 56 04 88 46 14 8b 0d ?? ?? ?? ??)
AOBScanModule(MGST,$process,8b 8e 8c 02 00 00 8b f8 e8 ?? ?? ?? ?? 33 db 84 c0 ?? ?? 3b fb ??)
AOBScanModule(GMD2,$process,f3 0f 10 54 24 04 56 8b f1 f3 0f 10 46 40 f3 0f 10 4e 3c 0f 28 d8)
AOBScanModule(GMD4,$process,83 ec 18 56 8b f1 80 7e 7d 00 0f 85 ?? ?? ?? ?? 8b 4e 0c 6a 0b e8)
AOBScanModule(MSUN,$process,8b 86 cc 00 00 00 8b c8 c1 e9 04 f6 c1 01 ?? ?? c1 e8 03 a8 01 ??)
AOBScanModule(MOCC,$process,8b 47 08 85 c0 ?? ?? 48 89 47 08 83 7f 08 00 0f 85 ?? ?? ?? ?? 8d)
AOBScanModule(MORI,$process,d9 5e 28 d9 ee d9 c9 df e9 dd d8 9f f6 c4 44 ?? ?? c6 44 24 12 01)
AOBScanModule(MOPC,$process,29 6e 14 8b 46 14 89 5e 18 ?? ?? 85 db ?? ?? 3b c3 ?? ?? 0f 57 c0)
assert(BCCK,ff 25 ?? ?? ?? ?? ff 25 ?? ?? ?? ?? ff 25 ?? ?? ?? ?? cc cc cc)
assert(BCK1,0f b6 07 03 c6 33 d2 be f1 ff 00 00 f7 f6 8b f2 8d 04 2e 33 d2)
assert(BCK2,8b 1f 2b 5c 24 30 33 d2 0f b6 c3 03 c6 be f1 ff 00 00 f7 f6 83)
//=========================================
alloc(CodeCopy,0x0199f000,$process)
registersymbol(CodeCopy)
//=========================================
// Copy Game
//=========================================
CodeCopy:
readmem($process,0x0199f000)
//=========================================
alloc(MyCode,4096,$process)
//=========================================
// Declaration section
label(_MonHumanPlayer)
label(_BackMHP)
label(_ExitMHP)
label(_GodMode)
label(_BackGMD)
label(_ExitGMD)
label(_GodMode1)
label(_BackGM1)
label(_ExitGM1)
label(_MonPlayerID)
label(_BackMPI)
label(_ExitMPI)
label(_MonGameStart)
label(_BackMGS)
label(_ExitMGS)
label(_GodMode2)
label(_BackGM2)
label(_ExitGM2)
label(_GodMode4)
label(_BackGM4)
label(_ExitGM4)
label(_MonSelUnit)
label(_BackMSU)
label(_ExitMSU)
label(_MonCommandCooldown)
label(_BackMCC)
label(_ExitMCC)
label(_MonReinfImprov)
label(_BackMRI)
label(_ExitMRI)
label(_MonPlayerConst)
label(_BackMPC)
label(_ExitMPC)
label(_BypassCrcCheck)
label(_BackBCC)
label(_ExitBCC)
label(_BypassCrcCheck1)
label(_BackBC1)
label(_ExitBC1)
label(_BypassCrcCheck2)
label(_BackBC2)
label(_ExitBC2)
label(pUnit)
label(pSel)
label(pPlayer)
label(iPlayerID)
label(iEnableMPR)
label(iEnableGMD)
label(iEnableCPP)
label(iEnableMUP)
label(iEnableMCC)
label(iEnableMRI)
label(iEnableMPC)
label(iEnableCRC)
label(fMinValue)
label(fValue)
label(pLast)
label(iEAX_Reg)
label(iECX_Reg)
label(iEDI_Reg)
label(iCount)
label(iCount1)
label(iCount2)
label(iCount3)
label(iCount4)
label(iCount5)
label(iCount6)
label(iCount7)
label(iLastAdd)
label(pCaller)
label(pCaller1)
label(pCaller2)
label(pCaller3)
label(pCaller4)
//=========================================
// Registering Symbols
registersymbol(MyCode)
registersymbol(pUnit)
registersymbol(pSel)
registersymbol(pPlayer)
registersymbol(iPlayerID)
registersymbol(iEnableMPR)
registersymbol(iEnableGMD)
registersymbol(iEnableCPP)
registersymbol(iEnableMUP)
registersymbol(iEnableMCC)
registersymbol(iEnableMRI)
registersymbol(iEnableMPC)
registersymbol(iCount)
registersymbol(iCount1)
registersymbol(iCount2)
registersymbol(iCount3)
registersymbol(iCount4)
registersymbol(iCount5)
registersymbol(iCount6)
registersymbol(iCount7)
registersymbol(iLastAdd)
registersymbol(fValue)
registersymbol(fMinValue)
registersymbol(pLast)
registersymbol(pCaller)
registersymbol(pCaller1)
registersymbol(pCaller2)
registersymbol(pCaller3)
registersymbol(pCaller4)
registersymbol(MHPR)
registersymbol(GDMD)
registersymbol(GMD1)
registersymbol(MPID)
registersymbol(MGST)
registersymbol(GMD2)
registersymbol(GMD4)
registersymbol(MSUN)
registersymbol(MOCC)
registersymbol(MORI)
registersymbol(MOPC)
//=========================================
MyCode:
//========================================= 300.16104
_MonHumanPlayer:
// mov dword ptr [pLast],'_MHP'
inc dword ptr [iCount]
mov edx,[esp+00]
mov [pCaller],edx
mov eax,[ecx+000000B4] // Original code
test eax,eax
jz _ExitMHP
cmp rdx,RMHP
jne _ExitMHP
mov ecx,[eax+08]
cmp ecx,[iPlayerID]
jne _ExitMHP
mov [pPlayer],eax
cmp dword ptr [iEnableMPR],0
je _MonHP00 // Jump if feature is disabled
mov ecx,[fMinValue]
mov edx,[eax+0000007c] // Manpower
cmp ecx,edx
cmovg edx,ecx
mov [eax+0000007c],edx
mov edx,[eax+00000084] // Munition
cmp ecx,edx
cmovg edx,ecx
mov [eax+00000084],edx
mov edx,[eax+00000080] // Fuel
cmp ecx,edx
cmovg edx,ecx
mov [eax+00000080],edx
_MonHP00:
cmp dword ptr [iEnableMUP],0
je _MonHP01 // Jump if feature is disabled
mov ecx,(float)50.0
cmp ecx,[eax+000004a8]
jns _MonHP01
mov [eax+000004a8],ecx
_MonHP01:
cmp dword ptr [iEnableCPP],0
je _ExitMHP // Jump if feature is disabled
mov ecx,(float)15.0
cmp ecx,[eax+0000008c]
js _ExitMHP
mov ecx,(float)1990.0
cmp ecx,[eax+00000088] // Command Point Progress
jle _ExitMHP
mov [eax+00000088],ecx
_ExitMHP:
jmp _BackMHP // Back to main code
//=========================================
//align 10,cc
//========================================= 300.14243
_GodMode:
mov dword ptr [pLast],'_GDM'
inc dword ptr [iCount1]
push eax
mov eax,[esp+04]
mov [pCaller1],eax
cmp dword ptr [iEnableGMD],0
je _ExitGMD // Jump if feature is disabled
mov eax,[ecx+0c]
test eax,eax
jz _ExitGMD
mov eax,[eax+000000b4]
cmp eax,[pPlayer]
jne _ExitGMD
fld1
pop eax
ret 0008
//==
_ExitGMD:
pop eax
sub esp,08 // Original code
xorps xmm3,xmm3 // Original code
jmp _BackGMD // Back to main code
//=========================================
//align 10,cc
//========================================= 300.14243
_GodMode1:
mov dword ptr [pLast],'_GM1'
inc dword ptr [iCount2]
push eax
mov eax,[esp+08]
mov [pCaller2],eax
cmp dword ptr [iEnableGMD],0
je _ExitGM1 // Jump if feature is disabled
mov [pUnit],ecx // Save ptr for debugging
mov eax,[ecx+0c]
test eax,eax
jz _ExitGM1
mov eax,[eax+000000b4]
cmp eax,[pPlayer]
jne _ExitGM1
movss xmm0,[ecx+40]
_ExitGM1:
pop eax
comiss xmm0,xmm1 // Original code
movss [ecx+3C],xmm0 // Original code
jmp _BackGM1 // Back to main code
//=========================================
//align 10,cc
//========================================= 300.12598
_MonPlayerID:
mov [iPlayerID],edx
_ExitMPI:
mov [edi],edx // Original code
mov [edi+04],eax // Original code
jmp _BackMPI // Back to main code
//=========================================
//align 10,cc
//========================================= 300.18664
_MonGameStart:
inc dword ptr [iCount7]
mov dword ptr [iPlayerID],#9999
_ExitMGS:
mov ecx,[esi+0000028C] // Original code
jmp _BackMGS // Back to main code
//=========================================
//align 10,cc
//========================================= 300.13006
_GodMode2:
mov dword ptr [pLast],'_GM2'
inc dword ptr [iCount3]
push eax
mov eax,[esp+04]
mov [pCaller3],eax
cmp eax,BGM2
je _ExitGM2
mov eax,[esp+08]
mov [fValue],eax
cmp dword ptr [iEnableGMD],0
je _ExitGM2 // Jump if feature is disabled
mov eax,[ecx+0c]
test eax,eax
jz _ExitGM2
mov eax,[eax+000000b4]
cmp eax,[pPlayer]
jne _ExitGM2
pop eax
ret 0008
//==
_ExitGM2:
pop eax
movss xmm2,[esp+04] // Original code
jmp _BackGM2 // Back to main code
//=========================================
//align 10,cc
//========================================= 400.16545
_GodMode4:
mov dword ptr [pLast],'_GM4'
inc dword ptr [iCount4]
push eax
mov eax,[esp+04]
mov [pCaller4],eax
cmp dword ptr [iEnableGMD],0
je _ExitGM4 // Jump if feature is disabled
mov [pUnit],ecx // Save ptr for debugging
mov eax,[ecx+0c] // pUnit
test eax,eax
jz _ExitGM4
mov eax,[eax+000000b4] // pPlayer
cmp eax,[pPlayer]
jne _ExitGM4
pop eax
ret 0020
//==
_ExitGM4:
pop eax
sub esp,18 // Original code
push esi // Original code
mov esi,ecx // Original code
jmp _BackGM4 // Back to main code
//=========================================
//align 10,cc
//========================================= 300.16337 (NHP)
// Game paused
_MonSelUnit:
mov [pSel],esi
_ExitMSU:
mov eax,[esi+000000CC] // Original code (Unit+CC)
jmp _BackMSU // Back to main code
//=========================================
//align 10,cc
//========================================= 400.19533
// When cooling down
_MonCommandCooldown:
mov dword ptr [pLast],'_MCC'
cmp dword ptr [iEnableMCC],0
je _ExitMCC // Jump if feature is disabled
mov eax,[esp+04]
cmp eax,[pPlayer]
jne _ExitMCC
mov eax,#100
cmp eax,[edi+08]
jns _ExitMCC
mov [edi+08],eax
_ExitMCC:
mov eax,[edi+08] // Original code (get cooldown)
test eax,eax // Original code
jmp _BackMCC // Back to main code
//=========================================
//align 10,cc
//========================================= 400.20637 (NEW)
// When Improving/Reinforcing
_MonReinfImprov:
mov dword ptr [pLast],'_MRI'
fstp dword ptr [esi+28] // Original code (set progress)
cmp dword ptr [iEnableMRI],0
je _ExitMRI // Jump if feature is disabled
cmp ebp,[pPlayer]
jne _ExitMRI
mov eax,(float)32.0
cmp eax,[esi+28]
jns _ExitMRI
mov [esi+28],eax
_ExitMRI:
fldz // Original code
jmp _BackMRI // Back to main code
//=========================================
//align 10,cc
//========================================= 400.20637 (NEW)
// When Constructing
_MonPlayerConst:
pushfd
mov dword ptr [pLast],'_MPC'
sub [esi+14],ebp // Original code (set progress)
cmp dword ptr [iEnableMPC],0
je _ExitMPC // Jump if feature is disabled
mov eax,[esi+0c]
test eax,eax
jz _ExitMPC
mov eax,[eax+000000b4]
cmp eax,[pPlayer]
jne _ExitMPC
mov eax,#32
cmp eax,[esi+14]
jns _ExitMPC
mov [esi+14],eax
_ExitMPC:
popfd
mov eax,[esi+14] // Original code
jmp _BackMPC // Back to main code
//=========================================
//align 10,cc
//========================================= 300.16337
_BypassCrcCheck:
mov [iEAX_Reg],eax
mov [iECX_Reg],ecx
cmp dword ptr [iFlagOK],55555555
jne _ExitBCC
cmp dword ptr [iEnableCRC],0
je _ExitBCC // Jump if feature is disabled
mov ecx,[esp+08]
cmp ecx,LUDOSTA
jl _ExitBCC
cmp ecx,LUDOEND
jge _ExitBCC
mov [iLastAdd],ecx
mov eax,LUDO
sub ecx,eax
mov eax,CodeCopy
add ecx,eax
inc dword ptr [iCount5]
mov [esp+08],ecx
_ExitBCC:
mov eax,[iEAX_Reg]
mov ecx,[iECX_Reg]
jmp dword ptr [JBCC] // Original code
jmp _BackBCC // Back to main code (keeping the template)
//=========================================
//align 10,cc
//========================================= 300.16337
_BypassCrcCheck1:
movzx eax,byte ptr [edi] // Original code
cmp dword ptr [iFlagOK],55555555
jne _ExitBC1
cmp dword ptr [iEnableCRC],0
je _ExitBC1 // Jump if feature is disabled
cmp edi,LUDOSTA
jl _ExitBC1
cmp edi,LUDOEND
jge _ExitBC1
inc dword ptr [iCount6]
mov [iEDI_Reg],edi
mov eax,LUDO
sub edi,eax
mov eax,CodeCopy
add edi,eax
movzx eax,byte ptr [edi] // Read from copy
mov edi,[iEDI_Reg]
_ExitBC1:
add eax,esi // Original code
jmp _BackBC1 // Back to main code (keeping the template)
//=========================================
//align 10,cc
//========================================= new
_BypassCrcCheck2:
mov ebx,[edi] // Original code
cmp dword ptr [iFlagOK],55555555
jne _ExitBC2
cmp dword ptr [iEnableCRC],0
je _ExitBC2 // Jump if feature is disabled
cmp edi,LUDOSTA
jl _ExitBC2
cmp edi,LUDOEND
jge _ExitBC2
inc dword ptr [iCount7]
mov [iEDI_Reg],edi
mov ebx,LUDO
sub edi,ebx
mov ebx,CodeCopy
add edi,ebx
mov ebx,[edi] // Read from copy
mov edi,[iEDI_Reg]
_ExitBC2:
sub ebx,[esp+30] // Original code
jmp _BackBC2 // Back to main code (keeping the template)
//=========================================
align 10,'='
//=========================================
db '===============================>'
db 'CE7.0 Script by Recifense 191205'
//=========================================
// Variables
iEnableMPR:
dd 0
iEnableGMD:
dd 0
iEnableCPP:
dd 0
iEnableMUP:
dd 0
iEnableMCC:
dd 0
iEnableMRI:
dd 0
iEnableMPC:
dd 0
iEnableCRC:
dd 1
pUnit:
dd 0
pSel:
dd 0
pPlayer:
dd MyCode
iPlayerID:
dd #9999
iEAX_Reg:
dd 0
iECX_Reg:
dd 0
iEDI_Reg:
dd 0
iCount:
dd 0
iCount1:
dd 0
iCount2:
dd 0
iCount3:
dd 0
iCount4:
dd 0
iCount5:
dd 0
iCount6:
dd 0
iCount7:
dd 0
iLastAdd:
dd 0
pCaller:
dd 0
pCaller1:
dd 0
pCaller2:
dd 0
pCaller3:
dd 0
pCaller4:
dd 0
fValue:
dd 0
fMinValue:
dd ctMRES
pLast:
db 'CE70'
iFlagOK:
dd 55555555
//=========================================
// Hacking Points
MHPR:
jmp _MonHumanPlayer
nop
_BackMHP:
GDMD:
jmp _GodMode
nop
_BackGMD:
GMD1:
jmp _GodMode1
_BackGM1:
MPID:
jmp _MonPlayerID
_BackMPI:
MGST:
jmp _MonGameStart
nop
_BackMGS:
GMD2:
jmp _GodMode2
nop
_BackGM2:
GMD4:
jmp _GodMode4
nop
_BackGM4:
MSUN:
jmp _MonSelUnit
nop
_BackMSU:
MOCC:
jmp _MonCommandCooldown
_BackMCC:
MORI:
jmp _MonReinfImprov
_BackMRI:
MOPC:
jmp _MonPlayerConst
nop
_BackMPC:
BCCK:
jmp _BypassCrcCheck
nop
_BackBCC:
BCK1:
jmp _BypassCrcCheck1
_BackBC1:
BCK2:
jmp _BypassCrcCheck2
nop
_BackBC2:
//=========================================
// Script for Restoring Original Codes
[DISABLE]
MHPR:
// mov eax,[ecx+000000B4]
db 8b 81 b4 00 00 00
GDMD:
// sub esp,08
// xorps xmm3,xmm3
db 83 ec 08 0f 57 db
GMD1:
// movss [ecx+3C],xmm0
db f3 0f 11 41 3c
MPID:
// mov [edi],edx
// mov [edi+04],eax
db 89 17 89 47 04
MGST:
// mov ecx,[esi+0000028C]
db 8b 8e 8c 02 00 00
GMD2:
// movss xmm2,[esp+04]
db f3 0f 10 54 24 04
GMD4:
// sub esp,18
// push esi
// mov esi,ecx
db 83 ec 18 56 8b f1
MSUN:
// mov eax,[esi+000000CC]
db 8b 86 cc 00 00 00
MOCC:
// mov eax,[edi+08]
// test eax,eax
db 8b 47 08 85 c0
MORI:
// fstp dword ptr [esi+28]
// fldz
db d9 5e 28 d9 ee
MOPC:
// sub [esi+14],ebp
// mov eax,[esi+14]
db 29 6e 14 8b 46 14
BCCK:
jmp dword ptr [JBCC]
BCK1:
// movzx eax,byte ptr [edi]
// add eax,esi
db 0f b6 07 03 c6
BCK2:
// mov ebx,[edi]
// sub ebx,[esp+30]
db 8b 1f 2b 5c 24 30
//=========================================
// Unregistering Symbols
unregistersymbol(MyCode)
unregistersymbol(CodeCopy)
unregistersymbol(pUnit)
unregistersymbol(pSel)
unregistersymbol(pPlayer)
unregistersymbol(iPlayerID)
unregistersymbol(iEnableMPR)
unregistersymbol(iEnableGMD)
unregistersymbol(iEnableCPP)
unregistersymbol(iEnableMUP)
unregistersymbol(iEnableMCC)
unregistersymbol(iEnableMRI)
unregistersymbol(iEnableMPC)
unregistersymbol(iCount)
unregistersymbol(iCount1)
unregistersymbol(iCount2)
unregistersymbol(iCount3)
unregistersymbol(iCount4)
unregistersymbol(iCount5)
unregistersymbol(iCount6)
unregistersymbol(iCount7)
unregistersymbol(iLastAdd)
unregistersymbol(fValue)
unregistersymbol(fMinValue)
unregistersymbol(pLast)
unregistersymbol(pCaller)
unregistersymbol(pCaller1)
unregistersymbol(pCaller2)
unregistersymbol(pCaller3)
unregistersymbol(pCaller4)
unregistersymbol(MHPR)
unregistersymbol(GDMD)
unregistersymbol(GMD1)
unregistersymbol(MPID)
unregistersymbol(MGST)
unregistersymbol(GMD2)
unregistersymbol(GMD4)
unregistersymbol(MSUN)
unregistersymbol(MOCC)
unregistersymbol(MORI)
unregistersymbol(MOPC)
//=========================================
dealloc(MyCode)
dealloc(CodeCopy)
//============= Scripts End ===============
// ****************************************
// NOTES
// ****************************************
{
}
259
"-------------- Safe to Use "
0000FF
1
98
"[X] <== God Mode ----------------------------------> (HK: CTRL+Home / CTRL+End)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableGMD",1)
getAddressList().getMemoryRecordByID(98).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableGMD",0)
getAddressList().getMemoryRecordByID(98).Color=0x0c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
229
"[X] <== Minimum Resources -----------------------> (HK: CTRL+Home / CTRL+End)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPR",1)
getAddressList().getMemoryRecordByID(229).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPR",0)
getAddressList().getMemoryRecordByID(229).Color=0x0c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
258
"Minimum Resources Value ==>"
0080FF
Float
fMinValue
257
"[X] <== Fast Construction --------------------------> (HK: CTRL+numeric 3 / CTRL+numeric 0)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPC",1)
getAddressList().getMemoryRecordByID(257).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPC",0)
getAddressList().getMemoryRecordByID(257).Color=0x0c08000
{$ASM}
Activate
17
99
0
Deactivate
17
96
1
256
"[X] <== Fast Reinforcement/Improvement ------> (HK: CTRL+numeric 2 / CTRL+numeric 0)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMRI",1)
getAddressList().getMemoryRecordByID(256).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMRI",0)
getAddressList().getMemoryRecordByID(256).Color=0x0c08000
{$ASM}
Activate
17
98
0
Deactivate
17
96
1
260
"-------------- Avoid to Use with Ardennes Campaign "
0000FF
1
230
"[X] <== Command Points Progress ----------------> (HK: CTRL+Page Up / CTRL+Page Down)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableCPP",1)
getAddressList().getMemoryRecordByID(230).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableCPP",0)
getAddressList().getMemoryRecordByID(230).Color=0x0c08000
{$ASM}
Activate
17
33
0
Deactivate
17
34
1
232
"[X] <== Unilimited Population ---------------------> (HK: CTRL+Insert / CTRL+Delete)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMUP",1)
getAddressList().getMemoryRecordByID(232).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMUP",0)
getAddressList().getMemoryRecordByID(232).Color=0x0c08000
{$ASM}
Activate
17
45
0
Deactivate
17
46
1
255
"[X] <== Fast Cooldown -----------------------------> (HK: CTRL+numeric 1 / CTRL+numeric 0)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMCC",1)
getAddressList().getMemoryRecordByID(255).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMCC",0)
getAddressList().getMemoryRecordByID(255).Color=0x0c08000
{$ASM}
Activate
17
97
0
Deactivate
17
96
1
228
"[X] <== Table/Script Information"
0000FF
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
getMainForm().CommentButton.doClick()
{$ASM}
[disable]
Recifense
20191205
===========================================
Game Title : Company Of Heroes 2
Game Version : 4.0.0.23367 (steam)
Game Sponsor : Fennix102
Proces Name : RelicCoH2.exe
Script Version: 5.17
CE Version : 7.0
Release date : 05-Dec-2019
Author : Recifense
History:
27-Jun-13: First Release
28-Jun-13: Release for version 3.0.0.9704 (RLD)
01-Jul-13: Release for version 3.0.0.9720 (STEAM)
11-Jul-13: Release for version 3.0.0.9804 (STEAM)
30-Jul-13: Changed approach of player identification
30-Jul-13: Release for version 3.0.0.9945 (STEAM)
21-Aug-13: Release for version 3.0.0.10242 (STEAM)
22-Aug-13: Release for version 3.0.0.10317 (STEAM)
29-Aug-13: Release for version 3.0.0.10416 (STEAM) (Improved GM)
01-Sep-13: Release for version 3.0.0.10416 (STEAM) (AOB)
01-Mar-14: Release for version 3.0.0.12598 (STEAM)
26-Mar-14: Release for version 3.0.0.13006 (STEAM)
23-Jun-14: Release for version 3.0.0.14243 (STEAM) (AOB)(CE64)
24-Jul-14: Release for version 3.0.0.14641 (STEAM)
30-Oct-14: Release for version 3.0.0.16104 (STEAM)
30-Oct-14: Release for version 3.0.0.16116 (STEAM)
18-Nov-14: Release for version 3.0.0.16337 (STEAM) (AOB) +(prot bypass)
19-Nov-14: Release for version 3.0.0.16337 (STEAM) +(prot bypass )(s1.4)
30-Nov-14: Release for version 3.0.0.16337 (STEAM) +(prot bypass 2)(s2.0)
09-Dec-14: Release for version 3.0.0.16549 (STEAM)
09-Dec-14: Release for version 3.0.0.16569 (STEAM)
15-Dec-14: Release for version 3.0.0.16598 (STEAM) + CMD Cooldown (s3.0)
05-Feb-15: Release for version 3.0.0.17120 (STEAM)
31-Mar-15: Release for version 3.0.0.17580 (STEAM)
18-Apr-15: Release for version 3.0.0.17779 (STEAM)
24-Jun-15: Release for version 3.0.0.18664 (STEAM)
26-Jun-15: Release for version 3.0.0.18705 (STEAM)
02-Jul-15: Release for version 3.0.0.18741 (STEAM)
02-Jul-15: Release for version 3.0.0.18778 (STEAM)
21-Jul-15: Release for version 3.0.0.18993 (STEAM)
01-Aug-15: Release for version 3.0.0.19100 (STEAM)
03-Sep-15: Release for version 4.0.0.19533 (STEAM)
05-Sep-15: Release for version 4.0.0.19545 (STEAM)
06-Sep-15: Fix due to some crashes (s3.1)
18-Sep-15: Release for version 4.0.0.19654 (STEAM)
24-Sep-15: Release for version 4.0.0.19696 (STEAM)
17-Oct-15: Release for version 4.0.0.20042 (STEAM) (s3.2)
31-Oct-15: Release for version 4.0.0.20266 (STEAM) (s3.3)
05-Dec-15: Release for version 4.0.0.20489 (STEAM)
10-Dec-15: Release for version 4.0.0.20546 (STEAM)
17-Dec-15: Release for version 4.0.0.20589 (STEAM)
15-Jan-16: Release for version 4.0.0.20637 (STEAM)
28-Jan-16: Added Fast Reinforcement/Improvement/Construction (S4.0)
27-Feb-16: Release for version 4.0.0.20954 (STEAM)
09-Mar-16: Release for version 4.0.0.20998 (STEAM)
11-Mar-16: Release for version 4.0.0.21025 (STEAM) (no change at all)
07-Apr-16: Release for version 4.0.0.21132 (STEAM)
20-Apr-16: Release for version 4.0.0.21244 (STEAM)
17-May-16: Release for version 4.0.0.21375 (STEAM)
18-May-16: Release for version 4.0.0.21400 (STEAM)
28-May-16: Release for version 4.0.0.21412 (STEAM)
10-Jun-16: Release for version 4.0.0.21466 (STEAM)
21-Jun-16: Release for version 4.0.0.21512 (STEAM)
05-Jul-16: Release for version 4.0.0.21543 (STEAM)
29-Jul-16: Release for version 4.0.0.21563 (STEAM)
19-Aug-16: Release for version 4.0.0.21567 (STEAM)
05-Oct-16: Release for version 4.0.0.21603 (STEAM)
22-Dec-16: Release for version 4.0.0.21643 (STEAM) (CE66)(s4.1)
24-Dec-16: Release for version 4.0.0.21647 (STEAM) (back to CE65)(s4.2)
28-Mar-17: Release for version 4.0.0.21699 (STEAM) (s5.0)(new approach CRC)
30-Mar-17: Release for version 4.0.0.21701 (STEAM)
25-Apr-17: Release for version 4.0.0.21725 (STEAM)
18-Jul-17: Release for version 4.0.0.21729 (STEAM) semi-aob
19-Sep-17: Release for version 4.0.0.21737 (STEAM) (fMinValue)
12-Oct-17: Release for version 4.0.0.21748 (STEAM)
19-Dec-17: Release for version 4.0.0.21796 (STEAM)
17-May-18: Release for version 4.0.0.21947 (STEAM)
18-May-18: Release for version 4.0.0.21949 (STEAM)
29-May-18: Release for version 4.0.0.21956 (STEAM)
11-Jul-18: Release for version 4.0.0.21984 (STEAM)
26-Oct-18: Release for version 4.0.0.22063 (STEAM)
21-Nov-18: Release for version 4.0.0.22114 (STEAM)
12-Dec-18: Release for version 4.0.0.23028 (STEAM)(s5.4) (update 72)
14-Dec-18: Release for version 4.0.0.23033 (STEAM)(s5.5) (update 73)
07-Feb-19: Release for version 4.0.0.23076 (STEAM)(s5.6) (update 74)
05-May-19: Release for version 4.0.0.23166 (STEAM)(s5.7) (update 75)
14-Jun-19: Release for version 4.0.0.23192 (STEAM)(s5.8) (update 76)
20-Jun-19: Release for version 4.0.0.23204 (STEAM)(s5.9) (update 77)
08-Jul-19: Release for version 4.0.0.23219 (STEAM)(s5.10) (update 78)
10-Sep-19: Release for version 4.0.0.23292 (STEAM)(s5.11) (update 79)
13-Sep-19: Release for version 4.0.0.23299 (STEAM)(s5.12) (update 80)
26-Sep-19: Release for version 4.0.0.23305 (STEAM)(s5.13) (update 81)
11-Oct-19: Release for version 4.0.0.23310 (STEAM)(s5.14) (update 82)
25-Oct-19: Release for version 4.0.0.23313 (STEAM)(s5.15) (update 83)
01-Nov-19: Release for version 4.0.0.23330 (STEAM)(s5.16) (update 84)
05-Dec-19: Release for version 4.0.0.23367 (STEAM)(s5.17) (update 85)
Features:
- Minimum Resources: [1]
- Manpower
- Munition
- Fuel
- Quick Command Points [2]
- God Mode [3]
- Maximum Pop Used [4]
- Fast Cooldown [5]
- Fast Reinforcement/Improvement [6]
- Fast Construction [7]
- Protection Bypass (new)
- Protection Bypass 2 (new)
===========================================
[1] Resources will not go under minimum value (190);
[2] Quick CP acquisition;
[3] That's it.
[4] Used Pop will not go over 50;
[5] Cooldown will start on 100;
[6] Time is reduced;
[7] Time is reduced;
===========================================
[USAGE]
1) Run CE70 or greater;
2) Run Game;
3) Load the game process "RelicCoH2.exe" in CE;
4) Load this table;
5) Activate the main script (in blue) by checking/clicking its box [X];
6) Now Activate the script of each cheat you want to use;
7) Go back to the game and have fun.
===========================================
HOTKEYS:
CTRL+Home = Enable Resource/GM cheats;
CTRL+End = Disable Resource/GM cheats;
----------
CTRL+PageUp = Enable CP cheat;
CTRL+PageDown = Disable CP cheat;
----------
CTRL+Inserte = Enable MPU(UP) cheat;
CTRL+Delete = Disable MPU(UP) cheat;
----------
CTRL+Numeric 1 = Enable FCD cheat;
CTRL+Numeric 2 = Enable FR/FI cheats;
CTRL+Numeric 3 = Enable FC cheat;
CTRL+Numeric 0 = Disable FCD/FR/FI/FC cheats;
===========================================
[ADVICE]
When you can,save the game before starting using table/cheat. So you can always come back in case you don't like the result.
===========================================
[INFO]
Tested on Win 10 64bits
===========================================
Cheers!