SunBeam wrote: ↑Wed Mar 06, 2019 10:52 am
LOL.. I mean..
Code: Select all
//// INJECTING START ----------------------------------------------------------
MetroExodus.exe+946DA4A: FF 90 38170000 - call qword ptr [rax+00001738]
//// INJECTING END ----------------------------------------------------------
MetroExodus.exe+946DA50: 84 C0 - test al,al
MetroExodus.exe+946DA52: 0F84 2C040000 - je 14946DE84
MetroExodus.exe+946DA58: 80 BF 8E0A0000 00 - cmp byte ptr [rdi+00000A8E],00
MetroExodus.exe+946DA5F: 0F85 1F040000 - jne 14946DE84
See how both the JE and JNE land in same spot?
Why not find and patch [rdi+A8E] to 1?
EDIT: Actually.. what you can do is enter [rax+1738] and patch the function to return 0 (xor eax,eax + ret). That way, any other function calling member function @ 0x1738 would have 0 as return
X birds, 1 stone
Code: Select all
MetroExodus.exe+301F68 - 8A 81 1A140000 - mov al,[rcx+0000141A]
MetroExodus.exe+301F6E - C3 - ret
to
Code: Select all
MetroExodus.exe+301F68 - xor al,al + ret
Basically, I don't know what else might call that; in theory it would always be for the flag, but the code that calls it is only for the mask filter. That and it's just how I did it.
Here's one that uses a multiplier for the gas mask filter decrease.
Code: Select all
{
Process : MetroExodus.exe - (x64)
Module : MetroExodus.exe
Game Title : Metro Exodus
Game Version : 1.0.0.2
CE Version : 6.83
Script Version : 0.0.1
Date : 03/04/19
Author : ShyTwig16
Name : GasMaskFilterDecHook
Gas Mask Filter Dec Hook
}
{$STRICT}
define(address, MetroExodus.exe+946DB5E)
define(bytes, F3 0F 5C D1 F3 0F 11 55 50)
////
//// ------------------------------ ENABLE ------------------------------
[ENABLE]
aobScanModule(aobGasMaskFilterDecHook, MetroExodus.exe, F2xxxxxxxxxxxxxx66xxxxxxF3xxxxxxF3xxxxxxF3xxxxxxxxE8)
define(injGasMaskFilterDecHook, aobGasMaskFilterDecHook+10)
assert(injGasMaskFilterDecHook, bytes)
registerSymbol(injGasMaskFilterDecHook)
alloc(memGasMaskFilterDecHook, 0x400, injGasMaskFilterDecHook)
label(fltGasMaskFilterDecHook)
registerSymbol(fltGasMaskFilterDecHook)
label(ptrGasMaskFilterDecHook)
registerSymbol(ptrGasMaskFilterDecHook)
label(n_code)
label(o_code)
label(exit)
label(return)
memGasMaskFilterDecHook:
fltGasMaskFilterDecHook:
dd (float)0.0625
align 10
ptrGasMaskFilterDecHook:
dq 0
align 10 CC
n_code:
mov [ptrGasMaskFilterDecHook],rdi
mulss xmm1,[fltGasMaskFilterDecHook]
o_code:
subss xmm2,xmm1
movss [rbp+50],xmm2
exit:
jmp return
////
//// ---------- Injection Point ----------
injGasMaskFilterDecHook:
jmp n_code
nop
nop
nop
nop
return:
////
//// ------------------------------ DISABLE ------------------------------
[DISABLE]
////
//// ---------- Injection Point ----------
injGasMaskFilterDecHook:
db bytes
unregisterSymbol(injGasMaskFilterDecHook)
unregisterSymbol(fltGasMaskFilterDecHook)
unregisterSymbol(ptrGasMaskFilterDecHook)
dealloc(memGasMaskFilterDecHook)
{
//// Injection Point: MetroExodus.exe+946DB5E - 000000014946DB5E
//// AOB address: 000000014946DB4E - MetroExodus.exe+946DB4E
//// Process: MetroExodus.exe - 0000000140000000
//// Module: MetroExodus.exe - 0000000140000000
//// Module Size: 00000000152FF000
MetroExodus.exe+946DAFE: F3 0F58 D9 - addss xmm3,xmm1
MetroExodus.exe+946DB02: EB 06 - jmp 14946DB0A
MetroExodus.exe+946DB04: 0F57 ED - xorps xmm5,xmm5
MetroExodus.exe+946DB07: 0F28 D3 - movaps xmm2,xmm3
MetroExodus.exe+946DB0A: 0F28 C3 - movaps xmm0,xmm3
MetroExodus.exe+946DB0D: F3 0F11 6C 24 28 - movss [rsp+28],xmm5
MetroExodus.exe+946DB13: 8B 44 24 28 - mov eax,[rsp+28]
MetroExodus.exe+946DB17: 48 89 F1 - mov rcx,rsi
MetroExodus.exe+946DB1A: 0F14 C2 - unpcklps xmm0,xmm2
MetroExodus.exe+946DB1D: F3 0F10 97 700A0000 - movss xmm2,[rdi+00000A70]
MetroExodus.exe+946DB25: F2 0F11 87 800A0000 - movsd [rdi+00000A80],xmm0
MetroExodus.exe+946DB2D: 44 0F28 C2 - movaps xmm8,xmm2
MetroExodus.exe+946DB31: F3 44 0F5E 87 740A0000 - divss xmm8,[rdi+00000A74]
MetroExodus.exe+946DB3A: 89 87 880A0000 - mov [rdi+00000A88],eax
MetroExodus.exe+946DB40: F2 0F11 44 24 20 - movsd [rsp+20],xmm0
MetroExodus.exe+946DB46: 0F57 C0 - xorps xmm0,xmm0
MetroExodus.exe+946DB49: F2 49 0F2A 07 - cvtsi2sd xmm0,[r15]
MetroExodus.exe+946DB4E: F2 0F59 05 3ADCF5F7 - mulsd xmm0,[1413CB790] [A0B5ED8D]<<<--- AOB Starts Here
MetroExodus.exe+946DB56: 66 0F5A C8 - cvtpd2ps xmm1,xmm0
MetroExodus.exe+946DB5A: F3 0F59 CB - mulss xmm1,xmm3
//// INJECTING START ----------------------------------------------------------
MetroExodus.exe+946DB5E: F3 0F5C D1 - subss xmm2,xmm1
MetroExodus.exe+946DB62: F3 0F11 55 50 - movss [rbp+50],xmm2
//// INJECTING END ----------------------------------------------------------
MetroExodus.exe+946DB67: E8 B48FFEF6 - call 140456B20
MetroExodus.exe+946DB6C: 80 3D 8DA718F8 00 - cmp byte ptr [1415F8300],00
MetroExodus.exe+946DB73: 74 0A - je 14946DB7F
MetroExodus.exe+946DB75: F3 0F10 1D 97DAF5F7 - movss xmm3,[1413CB614] [(float)0.0010]
MetroExodus.exe+946DB7D: EB 03 - jmp 14946DB82
MetroExodus.exe+946DB7F: 0F57 DB - xorps xmm3,xmm3
MetroExodus.exe+946DB82: F3 0F10 05 C2E2F5F7 - movss xmm0,[1413CBE4C] [(float)3000.0000]
MetroExodus.exe+946DB8A: F3 0F10 55 50 - movss xmm2,[rbp+50]
MetroExodus.exe+946DB8F: F3 0F5D D0 - minss xmm2,xmm0
MetroExodus.exe+946DB93: F3 0F11 44 24 48 - movss [rsp+48],xmm0
MetroExodus.exe+946DB99: F3 0F11 5C 24 4C - movss [rsp+4C],xmm3
MetroExodus.exe+946DB9F: F3 0F5F D3 - maxss xmm2,xmm3
MetroExodus.exe+946DBA3: F3 0F11 97 700A0000 - movss [rdi+00000A70],xmm2
MetroExodus.exe+946DBAB: F3 0F11 55 50 - movss [rbp+50],xmm2
MetroExodus.exe+946DBB0: 0F54 D6 - andps xmm2,xmm6
MetroExodus.exe+946DBB3: 0F2F D7 - comiss xmm2,xmm7
MetroExodus.exe+946DBB6: 73 63 - jae 14946DC1B
MetroExodus.exe+946DBB8: 44 0F2F 8E 68030000 - comiss xmm9,[rsi+00000368]
MetroExodus.exe+946DBC0: 73 59 - jae 14946DC1B
//// Template: I2CEA_AOBFullInjectionWithValues
//// Generated with: I2 Cheat Engine Auto Assembler Script Template Generator
//// Code Happy, Code Freely, Be Awesome.
}
And for the filter reserve.
Code: Select all
{
Process : MetroExodus.exe - (x64)
Module : MetroExodus.exe
Game Title : Metro Exodus
Game Version : 1.0.0.2
CE Version : 6.83
Script Version : 0.0.1
Date : 03/04/19
Author : ShyTwig16
Name : FilterReserveDecHook
Filter Reserve Dec Hook
}
{$STRICT}
define(address, MetroExodus.exe+93BBB7C)
define(bytes, F3 0F 5C CA F3 0F 58 D6)
////
//// ------------------------------ ENABLE ------------------------------
[ENABLE]
aobScanModule(aobFilterReserveDecHook, MetroExodus.exe, 0F5BxxF3xxxxxxF3xxxxxxF3xxxxxxF3xxxxxxF3xxxxxxxxxxxxxxF3)
define(injFilterReserveDecHook, aobFilterReserveDecHook+B)
assert(injFilterReserveDecHook, bytes)
registerSymbol(injFilterReserveDecHook)
alloc(memFilterReserveDecHook, 0x400, injFilterReserveDecHook)
label(fltFilterReserveDecHook)
registerSymbol(fltFilterReserveDecHook)
label(ptrFilterReserveDecHook)
registerSymbol(ptrFilterReserveDecHook)
label(n_code)
label(o_code)
label(exit)
label(return)
memFilterReserveDecHook:
fltFilterReserveDecHook:
dd (float)0.0625
align 10
ptrFilterReserveDecHook:
dq 0
align 10 CC
n_code:
mov [ptrFilterReserveDecHook],rdi
mulss xmm2,[fltFilterReserveDecHook]
subss xmm1,xmm2
movss xmm2,xmm0
o_code:
// subss xmm1,xmm2
addss xmm2,xmm6
exit:
jmp return
////
//// ---------- Injection Point ----------
injFilterReserveDecHook:
jmp n_code
nop
nop
nop
return:
////
//// ------------------------------ DISABLE ------------------------------
[DISABLE]
////
//// ---------- Injection Point ----------
injFilterReserveDecHook:
db bytes
unregisterSymbol(injFilterReserveDecHook)
unregisterSymbol(fltFilterReserveDecHook)
unregisterSymbol(ptrFilterReserveDecHook)
dealloc(memFilterReserveDecHook)
{
//// Injection Point: MetroExodus.exe+93BBB7C - 00000001493BBB7C
//// AOB address: 00000001493BBB71 - MetroExodus.exe+93BBB71
//// Process: MetroExodus.exe - 0000000140000000
//// Module: MetroExodus.exe - 0000000140000000
//// Module Size: 00000000152FF000
MetroExodus.exe+93BBB2A: 0F86 85000000 - jbe 1493BBBB5
MetroExodus.exe+93BBB30: F3 0F5C C2 - subss xmm0,xmm2
MetroExodus.exe+93BBB34: F3 0F5C C8 - subss xmm1,xmm0
MetroExodus.exe+93BBB38: F3 0F11 8F F0080000 - movss [rdi+000008F0],xmm1
MetroExodus.exe+93BBB40: EB 73 - jmp 1493BBBB5
MetroExodus.exe+93BBB42: 48 89 D9 - mov rcx,rbx
MetroExodus.exe+93BBB45: E8 36C716F7 - call 140528280
MetroExodus.exe+93BBB4A: F3 0F10 8F F0080000 - movss xmm1,[rdi+000008F0]
MetroExodus.exe+93BBB52: 48 8D 54 24 68 - lea rdx,[rsp+68]
MetroExodus.exe+93BBB57: 0FB7 C0 - movzx eax,ax
MetroExodus.exe+93BBB5A: 0F28 D1 - movaps xmm2,xmm1
MetroExodus.exe+93BBB5D: 45 85 FF - test r15d,r15d
MetroExodus.exe+93BBB60: 48 89 E9 - mov rcx,rbp
MetroExodus.exe+93BBB63: 40 0F94 D6 - sete sil
MetroExodus.exe+93BBB67: 45 31 C9 - xor r9d,r9d
MetroExodus.exe+93BBB6A: 66 0F6E C0 - movd xmm0,eax
MetroExodus.exe+93BBB6E: 41 89 F0 - mov r8d,esi
MetroExodus.exe+93BBB71: 0F5B C0 - cvtdq2ps xmm0,xmm0 <<<--- AOB Starts Here
MetroExodus.exe+93BBB74: F3 0F5C C6 - subss xmm0,xmm6
MetroExodus.exe+93BBB78: F3 0F5D D0 - minss xmm2,xmm0
//// INJECTING START ----------------------------------------------------------
MetroExodus.exe+93BBB7C: F3 0F5C CA - subss xmm1,xmm2
MetroExodus.exe+93BBB80: F3 0F58 D6 - addss xmm2,xmm6
//// INJECTING END ----------------------------------------------------------
MetroExodus.exe+93BBB84: F3 0F11 8F F0080000 - movss [rdi+000008F0],xmm1
MetroExodus.exe+93BBB8C: F3 0F11 93 740A0000 - movss [rbx+00000A74],xmm2
MetroExodus.exe+93BBB94: F3 0F11 93 700A0000 - movss [rbx+00000A70],xmm2
MetroExodus.exe+93BBB9C: 48 8B 05 7D0A24F8 - mov rax,[1415FC620] [00000000]
MetroExodus.exe+93BBBA3: 48 89 44 24 68 - mov [rsp+68],rax
MetroExodus.exe+93BBBA8: E8 F349F7F6 - call 1403305A0
MetroExodus.exe+93BBBAD: 48 89 D9 - mov rcx,rbx
MetroExodus.exe+93BBBB0: E8 2BC516F7 - call 1405280E0
MetroExodus.exe+93BBBB5: 48 89 D9 - mov rcx,rbx
MetroExodus.exe+93BBBB8: E8 F3CD16F7 - call 1405289B0
MetroExodus.exe+93BBBBD: 0F28 74 24 20 - movaps xmm6,[rsp+20]
MetroExodus.exe+93BBBC2: B8 01000000 - mov eax,00000001
MetroExodus.exe+93BBBC7: 48 8B 74 24 58 - mov rsi,[rsp+58]
MetroExodus.exe+93BBBCC: 48 8B 6C 24 50 - mov rbp,[rsp+50]
MetroExodus.exe+93BBBD1: 48 8B 5C 24 60 - mov rbx,[rsp+60]
MetroExodus.exe+93BBBD6: 48 83 C4 30 - add rsp,30
MetroExodus.exe+93BBBDA: 41 5F - pop r15
MetroExodus.exe+93BBBDC: 41 5E - pop r14
MetroExodus.exe+93BBBDE: 5F - pop rdi
//// Template: I2CEA_AOBFullInjectionWithValues
//// Generated with: I2 Cheat Engine Auto Assembler Script Template Generator
//// Code Happy, Code Freely, Be Awesome.
}
And if any one needs the camera pitch and yaw.
Code: Select all
MetroExodus.exe+5AAA59: 0F58 D0 - addps xmm2,xmm0
MetroExodus.exe+5AAA5C: 0F58 D1 - addps xmm2,xmm1
MetroExodus.exe+5AAA5F: 41 0F58 50 30 - addps xmm2,[r8+30] <<<--- AOB Starts Here
MetroExodus.exe+5AAA64: 0F29 55 90 - movaps [rbp-70],xmm2
//// INJECTING START ----------------------------------------------------------
MetroExodus.exe+5AAA68: F2 0F10 80 18090000 - movsd xmm0,[rax+00000918] // 918 = pitch // 91C = yaw
//// INJECTING END ----------------------------------------------------------
MetroExodus.exe+5AAA70: F2 0F11 44 24 50 - movsd [rsp+50],xmm0
MetroExodus.exe+5AAA76: 8B 80 20090000 - mov eax,[rax+00000920]
MetroExodus.exe+5AAA7C: 89 44 24 58 - mov [rsp+58],eax
MetroExodus.exe+5AAA80: 45 85 E4 - test r12d,r12d
MetroExodus.exe+5AAA83: 0F84 BD000000 - je 1405AAB46
MetroExodus.exe+5AAA89: 4C 8D 4C 24 60 - lea r9,[rsp+60]
MetroExodus.exe+5AAA8E: 49 8B CD - mov rcx,r13
MetroExodus.exe+5AAA91: 4C 8D 45 90 - lea r8,[rbp-70]
MetroExodus.exe+5AAA95: 48 8D 54 24 50 - lea rdx,[rsp+50]
MetroExodus.exe+5AAA9A: E8 01449600 - call 140F0EEA0
MetroExodus.exe+5AAA9F: 45 85 F6 - test r14d,r14d
MetroExodus.exe+5AAAA2: 74 21 - je 1405AAAC5
MetroExodus.exe+5AAAA4: 45 85 FF - test r15d,r15d
MetroExodus.exe+5AAAA7: 74 1C - je 1405AAAC5
MetroExodus.exe+5AAAA9: 4C 8B 87 80000000 - mov r8,[rdi+00000080]
MetroExodus.exe+5AAAB0: 49 81 C0 00010000 - add r8,00000100
MetroExodus.exe+5AAAB7: 48 8D 55 A0 - lea rdx,[rbp-60]
MetroExodus.exe+5AAABB: 48 8D 4C 24 30 - lea rcx,[rsp+30]
MetroExodus.exe+5AAAC0: E8 2B150000 - call 1405ABFF0
MetroExodus.exe+5AAAC5: 48 63 87 B0000000 - movsxd rax,dword ptr [rdi+000000B0]