The intermittent x32 crashes were due to unsafe modeless-dialogue copying, where some windows were assigned through a custom operator=() that only copied m_hWnd. I removed that pattern, and the dialogue classes are now non-copyable, so the same bug cannot silently return in the future.
- Inspect Memory now supports Hex, ASCII, and UNICODE views, and patching works directly in all three modes with strict validation to prevent malformed writes.
- The x64 patching issue where VirtualProtectExA could fail with GetLastError() = 87 was narrowed down to invalid protection-range handling; the fix now uses VirtualQueryEx, validates committed memory, checks region boundaries, and aligns protection changes to page boundaries.
- The Memory Block window also now shows the owning DLL or mapped module name when available, with clear fallback labels for private or unresolved regions.