-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmonotest.py
30 lines (21 loc) · 837 Bytes
/
monotest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from memmod import MonoProcess
proc = MonoProcess(name="SwallowTheSea")
print("Connected:", proc.pid, proc.image)
playerController = proc.get_mono_class("PlayerController")
damage_addr = playerController.get_method_addr("Damage")
stamina_offset = playerController.get_field_offset("_staminaCoolDownTime")
print("class:", playerController)
print("damage_addr:", hex(damage_addr))
print("stamina_offset:", hex(stamina_offset))
objbase_addr = 0
def handle_damage(regs, _):
global objbase_addr
print("Got damage, rdi:", regs.rdi)
objbase_addr = regs.rdi
return False
proc.write(damage_addr, 0xC3) # insert ret to prevent getting damage
proc.add_breakpoint(damage_addr, handle_damage)
proc.listen()
stamina_addr = objbase_addr + stamina_offset
print("stamina_addr:", hex(stamina_addr))
proc.write(stamina_addr, 0, 8)