For those in need, as I found it quite a hassle grinding with just 2xp per swing-style...
EXP Multiplier (x10):
Code: Select all
{ Game : Spider-Man.exe
Version:
Date : 2022-08-13
Author : Bluepanda
This script does blah blah blah
}
[ENABLE]
aobscanmodule(experience_gain,Spider-Man.exe,89 83 48 B8 00 00) // should be unique
alloc(newmem,$1000,experience_gain)
label(code)
label(return)
newmem:
sub eax,[rbx+0000B848]
imul eax,#10
add eax,[rbx+0000B848]
code:
mov [rbx+0000B848],eax
jmp return
experience_gain:
jmp newmem
nop
return:
registersymbol(experience_gain)
[DISABLE]
experience_gain:
db 89 83 48 B8 00 00
unregistersymbol(experience_gain)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: Spider-Man.exe+CB7C8B
Spider-Man.exe+CB7C66: 73 0B - jae Spider-Man.exe+CB7C73
Spider-Man.exe+CB7C68: 01 BB EC D0 00 00 - add [rbx+0000D0EC],edi
Spider-Man.exe+CB7C6E: E9 5A 01 00 00 - jmp Spider-Man.exe+CB7DCD
Spider-Man.exe+CB7C73: 33 D2 - xor edx,edx
Spider-Man.exe+CB7C75: 48 8B CB - mov rcx,rbx
Spider-Man.exe+CB7C78: E8 E3 35 00 00 - call Spider-Man.exe+CBB260
Spider-Man.exe+CB7C7D: 48 8B 4B 18 - mov rcx,[rbx+18]
Spider-Man.exe+CB7C81: 8B F0 - mov esi,eax
Spider-Man.exe+CB7C83: 8B 83 48 B8 00 00 - mov eax,[rbx+0000B848]
Spider-Man.exe+CB7C89: 03 C7 - add eax,edi
// ---------- INJECTING HERE ----------
Spider-Man.exe+CB7C8B: 89 83 48 B8 00 00 - mov [rbx+0000B848],eax
// ---------- DONE INJECTING ----------
Spider-Man.exe+CB7C91: 44 8B 41 78 - mov r8d,[rcx+78]
Spider-Man.exe+CB7C95: 43 8D 0C 30 - lea ecx,[r8+r14]
Spider-Man.exe+CB7C99: 3B C1 - cmp eax,ecx
Spider-Man.exe+CB7C9B: 7C 38 - jl Spider-Man.exe+CB7CD5
Spider-Man.exe+CB7C9D: 45 85 C0 - test r8d,r8d
Spider-Man.exe+CB7CA0: 7E 33 - jle Spider-Man.exe+CB7CD5
Spider-Man.exe+CB7CA2: 8B 8B 4C B8 00 00 - mov ecx,[rbx+0000B84C]
Spider-Man.exe+CB7CA8: 41 2B C6 - sub eax,r14d
Spider-Man.exe+CB7CAB: 99 - cdq
Spider-Man.exe+CB7CAC: 41 F7 F8 - idiv r8d
}
And yes, the subtraction, multiplication and addition is necessary, as for the regular (single line) imul-manipulation, there is a huge issue with the gained exp, which is kinda not multiplied by the given e.g. x10, but more like with some random values. A swing with a single style move rewards the player 2XP, multiplying this with 10 should hand out 20 exp, logically, right? Wrong. It somehow trashes that logic and gives you thousands of EXP for whatever reason, boosting you from e.g. Lv13 up to lv 40+++ lol.
Just for your concern, the game will not show the correctly multiplied value, if activating the cheat and doing stuff. It will show like 16xp gained from swinging around, but will surely multiply that properly (you can check your current EXP gauge inside the inventory/map menu). It is just an UI bug.
This is btw the current exp value pointer, a real pointer, which will never change:
"Spider-Man.exe"+7019988 - 4 byte