AI - reload:
Code: Select all
AlienShooter.exe+78582 - C7 80 A8000000 FFFFFFFF - mov [eax+000000A8],FFFFFFFF
AlienShooter.exe+7858C - 8B 4F 04 - mov ecx,[edi+04]
AlienShooter.exe+7858F - 8B 41 24 - mov eax,[ecx+24]
AlienShooter.exe+78592 - 8B 40 2C - mov eax,[eax+2C]
AlienShooter.exe+78595 - EB 03 - jmp AlienShooter.exe+7859A
AlienShooter.exe+78597 - 8B 42 30 - mov eax,[edx+30]
AlienShooter.exe+7859A - 05 B8820100 - add eax,000182B8
AlienShooter.exe+7859F - 89 47 4C - mov [edi+4C],eax
Code: Select all
AlienShooter.exe+6F886 - C7 80 A8000000 FFFFFFFF - mov [eax+000000A8],FFFFFFFF
AlienShooter.exe+6F890 - 8B 47 04 - mov eax,[edi+04]
AlienShooter.exe+6F893 - 8B 40 24 - mov eax,[eax+24]
AlienShooter.exe+6F896 - 8B 40 2C - mov eax,[eax+2C]
AlienShooter.exe+6F899 - 05 B8820100 - add eax,000182B8
AlienShooter.exe+6F89E - 89 47 4C - mov [edi+4C],eax
AlienShooter.exe+6F8A1 - E9 70100000 - jmp AlienShooter.exe+70916
So a rough Instant Reload + Fast Fire would be the script below:
Code: Select all
{ Game : AlienShooter.exe
Version:
Date : 2020-01-29
Author : SunBeam
}
[ENABLE]
aobscanmodule( hk_Reload, AlienShooter.exe, 8B47??8B40??8B40??05 )
registersymbol( hk_Reload )
label( hk_Reload_o )
registersymbol( hk_Reload_o )
alloc( Hook, 0x1000, AlienShooter.exe )
Hook:
mov eax,[edi+4]
mov eax,[eax+24]
mov [eax+2C],0
mov [eax+30],10
hk_Reload_o:
readmem( hk_Reload, 6 )
jmp hk_Reload+6
hk_Reload:
jmp Hook
nop
[DISABLE]
hk_Reload:
readmem( hk_Reload_o, 6 )
dealloc(Hook)
unregistersymbol( hk_Reload_o )
unregistersymbol( hk_Reload )
{
// ORIGINAL CODE - INJECTION POINT: "AlienShooter.exe"+6F890
"AlienShooter.exe"+6F861: E9 B0 10 00 00 - jmp AlienShooter.exe+70916
"AlienShooter.exe"+6F866: 8B 47 14 - mov eax,[edi+14]
"AlienShooter.exe"+6F869: 85 C0 - test eax,eax
"AlienShooter.exe"+6F86B: 0F 84 A5 10 00 00 - je AlienShooter.exe+70916
"AlienShooter.exe"+6F871: 8B 4F 04 - mov ecx,[edi+04]
"AlienShooter.exe"+6F874: 85 C9 - test ecx,ecx
"AlienShooter.exe"+6F876: 0F 84 9A 10 00 00 - je AlienShooter.exe+70916
"AlienShooter.exe"+6F87C: 83 79 24 00 - cmp dword ptr [ecx+24],00
"AlienShooter.exe"+6F880: 0F 84 90 10 00 00 - je AlienShooter.exe+70916
"AlienShooter.exe"+6F886: C7 80 A8 00 00 00 FF FF FF FF - mov [eax+000000A8],FFFFFFFF
// ---------- INJECTING HERE ----------
"AlienShooter.exe"+6F890: 8B 47 04 - mov eax,[edi+04]
"AlienShooter.exe"+6F893: 8B 40 24 - mov eax,[eax+24]
// ---------- DONE INJECTING ----------
"AlienShooter.exe"+6F896: 8B 40 2C - mov eax,[eax+2C]
"AlienShooter.exe"+6F899: 05 B8 82 01 00 - add eax,000182B8
"AlienShooter.exe"+6F89E: 89 47 4C - mov [edi+4C],eax
"AlienShooter.exe"+6F8A1: E9 70 10 00 00 - jmp AlienShooter.exe+70916
"AlienShooter.exe"+6F8A6: 8B 47 24 - mov eax,[edi+24]
"AlienShooter.exe"+6F8A9: E9 6A 10 00 00 - jmp AlienShooter.exe+70918
"AlienShooter.exe"+6F8AE: 8B 43 0C - mov eax,[ebx+0C]
"AlienShooter.exe"+6F8B1: C1 E0 04 - shl eax,04
"AlienShooter.exe"+6F8B4: 33 87 88 00 00 00 - xor eax,[edi+00000088]
"AlienShooter.exe"+6F8BA: 83 E0 10 - and eax,10
}
Notes:
1] You will have to redo this operation if you press TAB and Esc.
2] The game will re-initialize the player inventory, thus each item in the inventory will have a new structure, therefore address. So the 0 and small values the script wrote when you reloaded last time won't be there, as your weapon's structure address has changed.
3] Similarly, if you change weapons, the addresses/values will reset again.
BR,
Sun
EDIT: Hit a crash at some point, will investigate later.