Skip to content

feat: add new features such as multi-attach, alerts, hex viewer, snapshot diff, pointer resolve, CT import#13

Merged
ykus4 merged 14 commits into
mainfrom
feat/all-improvements
May 7, 2026
Merged

feat: add new features such as multi-attach, alerts, hex viewer, snapshot diff, pointer resolve, CT import#13
ykus4 merged 14 commits into
mainfrom
feat/all-improvements

Conversation

@ykus4
Copy link
Copy Markdown
Owner

@ykus4 ykus4 commented May 7, 2026

Summary

  • Multi-process attach: attach multiple PIDs simultaneously, switch active process with 3s
  • Conditional watch (alerts): trigger actions (notify / auto-write) when a value crosses a threshold or
    changes
  • Hex viewer: Web UI panel for viewing raw memory in classic hex dump format
  • Snapshot diff: take two memory snapshots and compare byte-level changes
  • Pointer chain resolve: re-resolve saved pointer chains after ASLR rebasing
  • CheatEngine .CT import: import CE cheat tables as bookmarks
  • Pointer tree view: display scan results grouped by base module in Web UI

Changes

  • internal/memory/watch/alert.go — AlertWatcher with condition-based monitoring
  • internal/memory/modify/snapshot.go — TakeSnapshot, DiffSnapshots, WriteDiff
  • internal/memory/pointer/resolve.go — ResolveChain for ASLR-aware address resolution
  • internal/memory/store/cheatengine.go — CT file XML parser
  • internal/app/state.go — multi-attach tracking, snapshot storage, AlertWatcher
  • internal/server/handlers.go — new endpoints: hexdump, snapshot, pointer resolve, CT import
  • internal/server/static/index.html — hex viewer panel, pointer tree visualization
  • cli_memory.go / cli_process.go / main.go — CLI handlers and menu entries

Test plan

  • go build ./... passes
  • golangci-lint run ./... passes
  • CLI: attach two processes, switch between them with 3s
  • CLI: set alert with 22a, verify it fires on threshold cross
  • Web UI: open Hex panel, enter address + size, verify hex dump renders
  • CLI: 23d snapshot diff — take snapshot, modify in target, see diff
  • CLI: pr resolve pointer chain with module name + offsets
  • CLI: ct import a .CT file, verify bookmarks appear
  • Web UI: run pointer scan, verify tree view grouped by module

ykus4 added 14 commits May 7, 2026 21:48
Take two snapshots of a memory region at different points in time and
see which bytes changed. Useful for reverse-engineering save data or
finding dynamic values without a known starting value.

- CLI: option 23d — interactive snapshot A → wait → snapshot B → diff
- API: POST /api/snapshot/take, POST /api/snapshot/diff
- Library: TakeSnapshot, DiffSnapshots, WriteDiff in modify package
Combines: freeze-interval, better-error-messages, parallel-scan,
pagination, split-main, and snapshot-diff into a single branch.
New AlertWatcher supports condition-based monitoring:
- Conditions: above threshold, below threshold, value changed
- Actions: notify only, or auto-write a value when triggered
- CLI: 22a (set alert), 22r (remove alert)
- Alerts are cleaned up on detach
Add a hex dump endpoint GET /api/memory/hexdump that reads raw bytes
from a given address and returns them as structured JSON lines. Add a
corresponding "Hex Viewer" panel in the Web UI sidebar that displays
memory in classic offset | hex | ASCII format.
Add ResolveChain() that takes a saved chain (base module label + offsets),
finds the module in the current process maps, and walks the pointer chain
to compute the final address. Useful for surviving ASLR across restarts.
Adds CLI command "pr" and POST /api/pointer/resolve endpoint.
Parse CheatEngine XML cheat table files and import their entries as
bookmarks. Supports address parsing (hex, module+offset) and maps CE
variable types to internal value types. Adds CLI command "ct" and
POST /api/import/ct endpoint.
Replace the flat table for pointer scan results with a tree view that
groups chains by base module. Each module shows its chains with indented
offset paths, making it easier to identify stable pointer paths across
different shared libraries.
Multiple processes can now be attached simultaneously. The active
process (used for search/modify) can be switched between them:
- Attach multiple PIDs via options 2 or 1s
- 3s: switch active process among attached ones
- 3l: list all attached processes (* marks active)
- Detach auto-switches to next attached process if available
@ykus4 ykus4 changed the title Feat/all improvements feat: add new features such as multi-attach, alerts, hex viewer, snapshot diff, pointer resolve, CT import May 7, 2026
@ykus4 ykus4 merged commit 0768b0e into main May 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant