From ead8e9fbe3a459bf274484f4ab86514d2dea5792 Mon Sep 17 00:00:00 2001 From: guiyomu-dev <22749537+guiyomu-dev@users.noreply.github.com> Date: Mon, 29 Sep 2025 00:17:25 +0200 Subject: [PATCH] use pattern for key bindings --- pkg/memory/keybindings.go | 4 ++-- pkg/memory/offset.go | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/pkg/memory/keybindings.go b/pkg/memory/keybindings.go index 209f8cc..bf09268 100644 --- a/pkg/memory/keybindings.go +++ b/pkg/memory/keybindings.go @@ -8,8 +8,8 @@ import ( ) func (gd *GameReader) GetKeyBindings() data.KeyBindings { - blob := gd.ReadBytesFromMemory(gd.moduleBaseAddressPtr+0x1DFFAF4, 0x500) - blobSkills := gd.ReadBytesFromMemory(gd.moduleBaseAddressPtr+0x2228030, 0x500) + blob := gd.ReadBytesFromMemory(gd.offset.KeyBindingsOffset, 0x500) + blobSkills := gd.ReadBytesFromMemory(gd.offset.KeyBindingsSkillsOffset, 0x500) skillsKB := [16]data.SkillBinding{} for i := 0; i < 7; i++ { diff --git a/pkg/memory/offset.go b/pkg/memory/offset.go index 8d25d1c..8056b6d 100644 --- a/pkg/memory/offset.go +++ b/pkg/memory/offset.go @@ -15,6 +15,8 @@ type Offset struct { WidgetStatesOffset uintptr WaypointsOffset uintptr FPS uintptr + KeyBindingsOffset uintptr + KeyBindingsSkillsOffset uintptr } func calculateOffsets(process Process) Offset { @@ -71,6 +73,16 @@ func calculateOffsets(process Process) Offset { fpsOffsetPtr := uintptr(process.ReadUInt(pattern+2, Uint32)) fpsOffset := pattern - process.moduleBaseAddressPtr + 6 + fpsOffsetPtr + // Keybindings + pattern = process.FindPattern(memory, "\x00\xA8\x00\x00\x00\x00\x7F\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x0F\x00\x00\x00\x00\x00\x00\x80\x4C\x6F\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52", "xx????x?xx????xxxxxxxxxxxxx??x?xxxxxxxxxxx") + keyBindingsOffset := pattern + 0x65 + + // KeyBindings Skills + pattern = process.FindPattern(memory, "\x0F\x10\x04\x24\x48\x6B\xC8\x1C\x48\x8D\x05", "xxxxxxxxxxx") + var keyBindingsSkillsOffset uintptr + bytes = process.ReadBytesFromMemory(pattern+11, 4) + relativeOffset := int32(binary.LittleEndian.Uint32(bytes)) + keyBindingsSkillsOffset = uintptr(int64(pattern) + 15 + int64(relativeOffset)) return Offset{ GameData: gameDataOffset, @@ -83,5 +95,7 @@ func calculateOffsets(process Process) Offset { WidgetStatesOffset: WidgetStatesOffset, WaypointsOffset: WaypointsOffset, FPS: fpsOffset, + KeyBindingsOffset: keyBindingsOffset, + KeyBindingsSkillsOffset: keyBindingsSkillsOffset, } }