Skip to content

feat: pattern scanning, pointer chains, thread enumeration, partial name match and logger - #24

Merged
JeanExtreme002 merged 7 commits into
mainfrom
jeanextreme002/aob-pointer-threads
May 26, 2026
Merged

feat: pattern scanning, pointer chains, thread enumeration, partial name match and logger#24
JeanExtreme002 merged 7 commits into
mainfrom
jeanextreme002/aob-pointer-threads

Conversation

@JeanExtreme002

@JeanExtreme002 JeanExtreme002 commented May 26, 2026

Copy link
Copy Markdown
Owner
  • Pattern scanning (AOB) with IDA-style "?" wildcards and bytes-regex support, via process.search_by_pattern(...) on all three backends.
  • resolve_pointer_chain(base, offsets, *, ptr_size=8) for multi-level pointer walks — the operation Cheat-Engine tables describe.
  • get_threads() / main_thread thread enumeration on Windows (Toolhelp32), Linux (/proc/<pid>/task/) and macOS (task_threads), with a shared ThreadInfo dataclass.
  • exact_match=False flag on OpenProcess / process-name lookup for substring matching (e.g. "chrome" -> "chrome.exe" / "Google Chrome").
  • Module-level "PyMemoryEditor" logger with NullHandler (silent by default); scanning helpers and macOS write-via-protect now emit at DEBUG/WARNING.
  • 43 new tests covering the five features.
  • README sections highlighting pattern scan and pointer chains.

Why is this PR necessary, what does it do?

Checklist (complete all items):

  • Added tests as necessary.
  • There is no breaking change for existing features.

References:

No references to be shared.

Notes:

No notes to be shared.

…ame match and logger

- Pattern scanning (AOB) with IDA-style "?" wildcards and bytes-regex support,
  via `process.search_by_pattern(...)` on all three backends.
- `resolve_pointer_chain(base, offsets, *, ptr_size=8)` for multi-level
  pointer walks — the operation Cheat-Engine tables describe.
- `get_threads()` / `main_thread` thread enumeration on Windows
  (Toolhelp32), Linux (`/proc/<pid>/task/`) and macOS (`task_threads`),
  with a shared `ThreadInfo` dataclass.
- `exact_match=False` flag on `OpenProcess` / process-name lookup for
  substring matching (e.g. "chrome" -> "chrome.exe" / "Google Chrome").
- Module-level "PyMemoryEditor" logger with NullHandler (silent by default);
  scanning helpers and macOS write-via-protect now emit at DEBUG/WARNING.
- 43 new tests covering the five features.
- README sections highlighting pattern scan and pointer chains.
…e in the Qt app

- ScannerPanel gains an "AOB Pattern (IDA)" value type that routes through
  search_by_pattern; scan-type/length controls and "Next Scan" are hidden
  in pattern mode since they don't apply.
- New Threads dialog (Tools → Threads, Ctrl+T): sortable TID/state/priority
  table with optional auto-refresh, backed by get_threads().
- New Resolve Pointer Chain dialog (Tools, toolbar, Ctrl+Shift+P): Cheat-
  Engine-style chain of "[+ hex ]" offset slots with a "+" to add hops and
  "×" to remove them; a "Base is a pointer" toggle switches between
  dereferencing (CE tables) and direct address + struct offsets; resolved
  addresses can be promoted into the cheat table.
- New Log Console dialog (Tools, Ctrl+L): live view of the "PyMemoryEditor"
  logger via a thread-safe handler. App modules now log captured errors
  (hex viewer / cheat write / scan worker / pointer chain) through child
  loggers so they surface in the console.
- Lead the pattern-scan section with a regex (email-harvesting) example,
  then the AOB/code example; retitle it "grep for process memory".
- Retitle the pointer-chain section to "resolve addresses that change every
  run" and describe multi-level pointers without framing them as a
  Cheat-Engine concept.
- Add section icons (🔍 search, 🗺️ memory regions) and a one-line primer on
  what memory regions are.
- Fix the nav-bar anchors to match the new section titles.
Add pattern scan, pointer-chain resolution, the threads viewer and the log
console to the bundled-app feature list so it reflects this PR.
Group the related app features into fewer, shorter bullets so the "out of
the box" column balances the install column beside it.
- Add a hero screenshot and a concrete use-case teaser near the top.
- Walk through the scan -> refine -> write loop in Quick Start so the
  reader understands where addresses come from.
- Document get_threads()/main_thread in the Usage Guide.
- Add a Troubleshooting section covering the first errors a user hits
  (PermissionError per OS, ProcessNotFoundError, empty Windows scans),
  and show how to enable the "PyMemoryEditor" logger.
- Make the nav bar list top-level sections only.
Add scripts/generate_app_screenshot.py for regenerating the app
screenshot, refresh the screenshot, and exclude scripts/ from the
source distribution.
@JeanExtreme002
JeanExtreme002 merged commit 100f3cd into main May 26, 2026
11 checks passed
@github-actions
github-actions Bot deleted the jeanextreme002/aob-pointer-threads branch May 26, 2026 21:46
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