Skip to content

v488

Choose a tag to compare

@bbfox0703 bbfox0703 released this 08 May 08:32
· 1230 commits to main since this release

tag align to OCT release
download pre-compiled application here: https://opencheattables.com/viewtopic.php?f=17&t=1797

Release v488 — Proxy DLL Deployment, DLL Lifecycle Hardening, UE 5.8 Support, Frieren-Themed Refactor

Range: v449 → v488 (40 commits) Highlights: Proxy DLL injection workflow (version.dll / dinput8.dll alternatives, passive-mode mutex), UE 5.8 detection + chunked-layout preset, DLL lifecycle hardening (DllMain detach, scan-thread join, pipe-server lock-while-join), Avalonia 12.0 API migration, Live Walker destroyed-object hang fix, and codebase-wide rename to Frieren-themed module names.


Proxy DLL Deployment

A new injection mode that drops a renamed proxy stub into the game's directory so the DLL loads on game start — no Cheat Engine attach required for users who only want to read pipe data.

  • version.dll / dinput8.dll alternatives — pick whichever the target game's import table actually resolves. dinput8.dll chosen for games that don't link version.dll.
  • UI radio button in the ProxyDeploy panel to pick which proxy the deploy step copies.
  • Passive-mode mutex — proxy build of the DLL holds a named mutex so a second injection (e.g. CE) is detected and skipped.
  • Skip CE inject when proxy DLL already loadedue5dump.lua checks for the mutex before calling injectDll, preventing double-load.
  • Single-click UI refresh after Deploy / Undeploy (was: required a second click to update the deployed-state badge).

DLL Lifecycle Hardening (audits A + B)

Two-pass audit of teardown paths that previously could deadlock or use-after-free during process exit / DLL unload.

Audit A

  • DllMain(DLL_PROCESS_DETACH) is now a no-op — Windows holds the loader lock during detach, and any pipe-server / scan-thread cleanup that touches OS APIs is forbidden there.
  • Join missing scan thread — earlier builds could leak the scan thread if the user closed the game before scan completion; cleanup now joins explicitly.

Audit B

  • Fern (PipeServer): lock-while-join pattern — disconnect under lock, join outside lock, to avoid the worker thread re-entering the same mutex.
  • Mimic (Mailbox): explicit state machine for inflight IPC; rejects new requests once shutdown is signaled.
  • Stark (GameThreadDispatch): soft-disable path — MinHook unhook is best-effort during teardown; if the hook can't be cleanly removed, dispatch falls back to no-op rather than crashing.

UI side

  • IDisposable on timer-owning ViewModels; panel event handlers are explicitly unsubscribed when panels close (was: stale handlers fired against disposed VMs).

UE 5.8 Support

  • Version detection — Tier patterns extended to recognize UE 5.8 builds.
  • Chunked-layout presetAura::ObjectArray exposes a 5.8 preset (matches new FUObjectArray stride / chunk size).

Avalonia 12.0 API Migration

  • Fixed breaking API changes from Avalonia 12.0.0 — IClassicDesktopStyleApplicationLifetime access pattern, control template / template-binding adjustments, and assorted property renames.
  • Sweep of remaining Avalonia + xUnit compile warnings.

Live Walker — destroyed-object hang fix

Browsing a UObject whose owning class had since been GC'd would hang the walker indefinitely (offset reads against a torn-down UClass). Walker now validates the class pointer's signature before traversing properties; invalid → return cleanly with an error event rather than blocking the worker thread.


Frieren-Themed DLL Refactor (PR #175)

Codebase-wide rename of C++ DLL modules to Frieren-character names for thematic consistency and to keep namespaces short / unambiguous.

Module New name
Memory Macht
Logger Sein
Signatures Himmel
OffsetFinder Genau
ObjectArray Aura
FNamePool Serie
UStructWalker Ubel
ExportAPI Frieren
PipeServer Fern
GameThreadDispatch Stark
Mailbox Mimic
HintCache Flamme
CEPlugin Methode
ProxyVersion Lugner

Done in two phases: A (file renames only, preserving behavior to keep diffs reviewable) → B (namespace + reference updates). See docs/naming-convention.md.


UI / UX Polish

  • Empty-state logo when LiveWalker DataGrid has no data (cleaner first-run experience).
  • Project logo (UE5CEDumper.jpg) added.
  • AOT / trim warnings swept across the C# tree (every project now builds clean under Native AOT).
  • xUnit analyzer warnings cleared.

Dependencies

  • NuGet packages refreshed (Avalonia, ReactiveUI, xUnit, source generators).
  • minhook and private submodules updated.
  • .gitignore: exclude build_proxy_dinput8/ build output.

Pull Requests Merged

  • #175 — Frieren-themed DLL rename (Phases A + B)
  • #178 — Avalonia 12.0 API compat
  • #180 — UE 5.8 version detection
  • #182 — Live Walker destroyed-object hang
  • #187 — AOT/trim + xUnit warning sweep
  • #188 — Proxy DLL deployment (version.dll / dinput8.dll, passive mutex)
  • #189 — DLL lifecycle hardening + UI lifetime + NuGet refresh
  • #190 — UE 5.8 chunked layout preset

Full Changelog: https://github.com/bbfox0703/UE5CEDumper/compare/v449...v488

# Release v488 — Proxy DLL Deployment, DLL Lifecycle Hardening, UE 5.8 Support, Frieren-Themed Refactor

Range: v449 → v488 (40 commits)
Highlights: Proxy DLL injection workflow (version.dll / dinput8.dll alternatives, passive-mode mutex), UE 5.8 detection + chunked-layout preset, DLL lifecycle hardening (DllMain detach, scan-thread join, pipe-server lock-while-join), Avalonia 12.0 API migration, Live Walker destroyed-object hang fix, and codebase-wide rename to Frieren-themed module names.


Proxy DLL Deployment

A new injection mode that drops a renamed proxy stub into the game's directory so the DLL loads on game start — no Cheat Engine attach required for users who only want to read pipe data.

  • version.dll / dinput8.dll alternatives — pick whichever the target game's import table actually resolves. dinput8.dll chosen for games that don't link version.dll.
  • UI radio button in the ProxyDeploy panel to pick which proxy the deploy step copies.
  • Passive-mode mutex — proxy build of the DLL holds a named mutex so a second injection (e.g. CE) is detected and skipped.
  • Skip CE inject when proxy DLL already loadedue5dump.lua checks for the mutex before calling injectDll, preventing double-load.
  • Single-click UI refresh after Deploy / Undeploy (was: required a second click to update the deployed-state badge).

DLL Lifecycle Hardening (audits A + B)

Two-pass audit of teardown paths that previously could deadlock or use-after-free during process exit / DLL unload.

Audit A

  • DllMain(DLL_PROCESS_DETACH) is now a no-op — Windows holds the loader lock during detach, and any pipe-server / scan-thread cleanup that touches OS APIs is forbidden there.
  • Join missing scan thread — earlier builds could leak the scan thread if the user closed the game before scan completion; cleanup now joins explicitly.

Audit B

  • Fern (PipeServer): lock-while-join pattern — disconnect under lock, join outside lock, to avoid the worker thread re-entering the same mutex.
  • Mimic (Mailbox): explicit state machine for inflight IPC; rejects new requests once shutdown is signaled.
  • Stark (GameThreadDispatch): soft-disable path — MinHook unhook is best-effort during teardown; if the hook can't be cleanly removed, dispatch falls back to no-op rather than crashing.

UI side

  • IDisposable on timer-owning ViewModels; panel event handlers are explicitly unsubscribed when panels close (was: stale handlers fired against disposed VMs).

UE 5.8 Support

  • Version detection — Tier patterns extended to recognize UE 5.8 builds.
  • Chunked-layout presetAura::ObjectArray exposes a 5.8 preset (matches new FUObjectArray stride / chunk size).

Avalonia 12.0 API Migration

  • Fixed breaking API changes from Avalonia 12.0.0 — IClassicDesktopStyleApplicationLifetime access pattern, control template / template-binding adjustments, and assorted property renames.
  • Sweep of remaining Avalonia + xUnit compile warnings.

Live Walker — destroyed-object hang fix

Browsing a UObject whose owning class had since been GC'd would hang the walker indefinitely (offset reads against a torn-down UClass). Walker now validates the class pointer's signature before traversing properties; invalid → return cleanly with an error event rather than blocking the worker thread.


Frieren-Themed DLL Refactor (PR #175)

Codebase-wide rename of C++ DLL modules to Frieren-character names for thematic consistency and to keep namespaces short / unambiguous.

Module New name
Memory Macht
Logger Sein
Signatures Himmel
OffsetFinder Genau
ObjectArray Aura
FNamePool Serie
UStructWalker Ubel
ExportAPI Frieren
PipeServer Fern
GameThreadDispatch Stark
Mailbox Mimic
HintCache Flamme
CEPlugin Methode
ProxyVersion Lugner

Done in two phases: A (file renames only, preserving behavior to keep diffs reviewable) → B (namespace + reference updates). See [docs/naming-convention.md](docs/naming-convention.md).


UI / UX Polish

  • Empty-state logo when LiveWalker DataGrid has no data (cleaner first-run experience).
  • Project logo (UE5CEDumper.jpg) added.
  • AOT / trim warnings swept across the C# tree (every project now builds clean under Native AOT).
  • xUnit analyzer warnings cleared.

Dependencies

  • NuGet packages refreshed (Avalonia, ReactiveUI, xUnit, source generators).
  • minhook and private submodules updated.
  • .gitignore: exclude build_proxy_dinput8/ build output.

Pull Requests Merged

  • [#175](#175) — Frieren-themed DLL rename (Phases A + B)
  • [#178](#178) — Avalonia 12.0 API compat
  • [#180](#180) — UE 5.8 version detection
  • [#182](#182) — Live Walker destroyed-object hang
  • [#187](#187) — AOT/trim + xUnit warning sweep
  • [#188](#188) — Proxy DLL deployment (version.dll / dinput8.dll, passive mutex)
  • [#189](#189) — DLL lifecycle hardening + UI lifetime + NuGet refresh
  • [#190](#190) — UE 5.8 chunked layout preset

Full Changelog: v449...v488