vidulj wrote: ↑Sat Jul 27, 2024 7:39 am
Can't help but feel like if I finagle with the stacks, somehow I can find the address lol but I am not the best with it.
It's possible (I did
NOT actually check it) that the only difference between Epic and Steam versions (in our case) is the offset of "
EffectStacks:SetStackCount". In Epic version it's (currently, they like to change it) "
11d" (pasting same code again):
Code: Select all
[ENABLE]
alloc(SetStacks,2048,"CrusadersGame.Effects.EffectStacks:SetStackCount"+11d)
label(ReturnToGame)
label(Exit)
label(HowManyStacks)
registersymbol(HowManyStacks)
SetStacks:
push rax
mov rax,[HowManyStacks]
mov [r15+B0],rax
pop rax
Exit:
jmp ReturnToGame
HowManyStacks:
dq (double)252
"CrusadersGame.Effects.EffectStacks:SetStackCount"+11d:
jmp SetStacks
nop 4
ReturnToGame:
[DISABLE]
unregistersymbol(*)
dealloc(*)
"CrusadersGame.Effects.EffectStacks:SetStackCount"+11d:
movsd [r15+B0],xmm0
If you can manage to find Steam's offset and change it in the table - it might work. What you have to find is instruction "
movsd [r15+000000B0],xmm0" (stacks hack TURNED OFF below):
Try:
- look for any stacks value address (#1.),
- right click on it -> "find out what writes to this address" (#2.). Wait until something appears in newly opened window,
- click on instruction and then "show disassembler" (#3.). IF you landed near what you can see in "Memory viewer" window - you're almost set.
- without cheating actual value is updated by the instruction seen @ (#4.). Check out what happens when I turn on stacks hack:
- see?
movsd changed to
jmp instruction,
- if we follow it to
223CDA70000 - address it points to - we end up (surprise, surprise ;]):
...in our SetStacks insertion set of instructions ;]
Turning off the cheat returns "
CrusadersGame.Effects.EffectStacks:SetStackCount+11d's" value back to the original "
movsd [r15+000000B0],xmm0".
Conclusion:
IF Steam uses exactly the same code for "
EffectStacks:SetStackCount" function (which is probable) - all you have to do is locate "
movsd [r15+000000B0],xmm0", read the offset value ("
+11d" in this example) and modify it accordingly in the script (3 times).
Voila!