I am so fucking pissed, I spent hours trying to fix ignore ammo pouch and I still can't get it to work.
Code: Select all
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
//have ammo pouch to reload flag fetchED, const
aobscanmodule(ammoPouchReadCallerForReloadFlagFetchCAOB,re2.exe,0F B6 C8 48 8B 43 50 48 83 78 ? ? 75 B5 85 C9 0F 95 C0 EB B0)
registersymbol(ammoPouchReadCallerForReloadFlagFetchCAOB)
alloc(newmem,2048,ammoPouchReadCallerForReloadFlagFetchCAOB) //"re2.exe"+B9565C)
label(returnhere)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
mov al,1
movzx ecx,al
mov rax,[rbx+50]
exit:
jmp returnhere
///
ammoPouchReadCallerForReloadFlagFetchCAOB: //"re2.exe"+B9565C:
jmp newmem
nop 2
returnhere:
///**************************************///
//cjmp1 to skip ammo/ammopouch chk on ammo/ammopouch cal after reload, before 1st ammopouch read after reload
aobscanmodule(haveAmmoPouchChkBeforeAmmoAPouchCallAfterReloadAOB,re2.exe,49 BC ? ? ? ? ? ? ? ? 85 D2 0F 84 ? ? ? ? 48 8D 44 24 ? 49 23 C4 48 8B 78 10)
registersymbol(haveAmmoPouchChkBeforeAmmoAPouchCallAfterReloadAOB)
alloc(newmem2,2048,haveAmmoPouchChkBeforeAmmoAPouchCallAfterReloadAOB) //"re2.exe"+BF872B)
label(returnhere2)
newmem2:
push rbx
mov rbx,pAmmo
mov byte ptr [rbx+c],1
test edx,edx
jnz short @f
mov edx,1
@@:
pop rbx
mov r12,7FFFFFFFFFFFFFFF
jmp returnhere2
haveAmmoPouchChkBeforeAmmoAPouchCallAfterReloadAOB: //"re2.exe"+BF872B:
jmp newmem2
nop 5
returnhere2:
///**************************************///
aobscanmodule(itemIDsReadForAltAmmoPresenceAOB,re2.exe,41 3B 41 18 0F 94 C0)
registersymbol(itemIDsReadForAltAmmoPresenceAOB)
itemIDsReadForAltAmmoPresenceAOB+4: //"re2.exe"+3108F2:
db 90 B0 01
///**************************************///
aobscanmodule(cJmpIfNoAltAmmoPouchForChangeAfterAlrAmmoChangeAOB,re2.exe, 39 78 18 0F 84 ? ? ? ? 48 8B 35)
registersymbol(cJmpIfNoAltAmmoPouchForChangeAfterAlrAmmoChangeAOB)
alloc(originalcode6_cJmpIfNoAltAmmoPouchForChangeAfterAlrAmmoChangeAOB,8,re2.exe)
registersymbol(originalcode6_cJmpIfNoAltAmmoPouchForChangeAfterAlrAmmoChangeAOB)
originalcode6_cJmpIfNoAltAmmoPouchForChangeAfterAlrAmmoChangeAOB:
readmem(cJmpIfNoAltAmmoPouchForChangeAfterAlrAmmoChangeAOB+3,6)
cJmpIfNoAltAmmoPouchForChangeAfterAlrAmmoChangeAOB+3: //"re2.exe"+C311C6D:
nop 6
///**************************************///
aobscanmodule(ammoPouchChkForEmptyingBarrelAnimAOB,re2.exe,8B 45 10 3B D0 0F 4C C2 )
registersymbol(ammoPouchChkForEmptyingBarrelAnimAOB)
alloc(newmem7,256,ammoPouchChkForEmptyingBarrelAnimAOB) //"re2.exe"+DC52E18)
label(returnhere7)
newmem7:
cmp [rbp+10],edx
jge short @f
mov [rbp+10],edx
@@:
mov eax, [rbp+10] //Original Code
cmp edx, eax //Original Code
cmovl eax, edx //Original Code
jmp returnhere7
ammoPouchChkForEmptyingBarrelAnimAOB: //"re2.exe"+DC52E18:
jmp newmem7
nop 3
returnhere7:
///??????????????????????????????????????///
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
ammoPouchReadCallerForReloadFlagFetchCAOB: //"re2.exe"+B9565C:
movzx ecx,al
mov rax,[rbx+50]
///**************************************///
dealloc(newmem2)
haveAmmoPouchChkBeforeAmmoAPouchCallAfterReloadAOB: //"re2.exe"+BF872B:
mov r12,7FFFFFFFFFFFFFFF
///**************************************///
itemIDsReadForAltAmmoPresenceAOB+4: //"re2.exe"+3108F2:
db 0F 94 C0
//Alt: sete al
///**************************************///
cJmpIfNoAltAmmoPouchForChangeAfterAlrAmmoChangeAOB+3: //"re2.exe"+C311C6D:
readmem(originalcode6_cJmpIfNoAltAmmoPouchForChangeAfterAlrAmmoChangeAOB,6)
//Alt: je re2.exe+C311E7C
///**************************************///
dealloc(newmem7)
ammoPouchChkForEmptyingBarrelAnimAOB: //"re2.exe"+FDEA1E:
db 8B 45 10 3B D0 0F 4C C2
unregistersymbol(ammoPouchChkForEmptyingBarrelAnimAOB)
///**************************************///
Cielos uses these fucking ReadMem functions in his original that make it impossible to figure out what the hell he was doing before so I had to guess based on the opcodes that were in my original 1.2 (Patch 2?) dumps. He does this Frankenstein bullshit of trying to half read the opcodes and half inject his own as some kind of nonsense to like auto update the script? But all it ended up doing was making it next to impossible to update. I swear to god, this is a 1:1 port of his script to the current update, yet it refuses to work! I checked everything 4 times, it's all an exact match, except for ammoPouchChkForEmptyingBarrelAnimAOB, which got completly changed when they removed denuvo, but I realligned the ASM and rewrote it by hand. The only thing I can think of is pAmmo being 0 but in his original and current script he never has anything set pAmmo, so I'm out of fucking ideas, I hate this script SO MUCH!