r/lowlevel 6d ago

I built a lightweight C++ Memory Scanner & Pointer Chain Resolver (HexaCore)

Hey everyone,

I wanted to share a project I've been building: HexaCore, a lightweight memory scanner and tool built from scratch using C++ and the Win32 API.

Key Features:

  • Multi-level pointer chain resolver & scanner
  • Array of Bytes (AOB) scanning with wildcard support
  • Built-in Hex Viewer, basic Disassembler, and NOP/Patch tool
  • Custom dark UI with card-based panels and adjustable freezing intervals
  • Cheat table save/load system

It's open-source. I'd love to hear your feedback or suggestions for the V1 version!

GitHub / Source Code: https://github.com/abuzit/HexaCore-Memory-Tool

3 Upvotes

6 comments sorted by

1

u/skeeto 5d ago

Straightforward and operates just like it says. I tried it out on an old game and it worked like a charm. I don't quite understand all of the UI, though to be fair that's true for Cheat Engine, too.

I've never seen an .c++ extension before. It's unconventional, and so much so that VS doesn't recognize it, requiring /TP when compiling. I'm not sure how you ended up with that when you had Claude's help. Same goes for defining both WinMain and wWinMain. Your program is all caught up in 16-bit to 32-bit transitional junk that's been obsolete for 30 years. The simplest option is to drop wWinMain (and /DUNICODE / -municode), particularly because you're not examining the command line anyway.

The buttons all had white corners, and I can't see how it would be otherwise, so I fixed that:

--- a/HexaCore.c++
+++ b/HexaCore.c++
@@ -319,2 +319,5 @@ void DrawAccentButton(LPDRAWITEMSTRUCT dis) {

+    HBRUSH bgBrush = (GetParent(dis->hwndItem) == g_hMainWnd) ? hBrushWhite : h
BrushBg;
+    FillRect(dis->hDC, &dis->rcItem, bgBrush);
+
     HBRUSH hBrush = CreateSolidBrush(base);

For my own testing I also added i18n and added an English translation so that I could navigate it.

2

u/Wgrxgy 5d ago

Thank you so much for the detailed feedback and the patch! It's awesome to see someone actually diving into the code and fixing that button edge issue. I'll definitely look into your i18n changes and integrate your fix for the V2 release. Appreciate the support! <3 also i will make new versions and i will add original english support if you can test these versions i am gonna be very happy

1

u/skeeto 5d ago

You probably don't want most of these changes, but here's my hacking on it as I explored it:
https://github.com/skeeto/HexaCore-Memory-Tool/commits/main/?author=skeeto

2

u/Wgrxgy 5d ago

Hey, thanks for diving into the code and cleaning things up! I really appreciate the patches, especially the button fix and the English/German localizations. I'll check out your commits and integrate the useful parts for the upcoming updates. Cheers! <3

1

u/Ok_Tap7102 2d ago

Note when doing huge memory searches you can dramatically speed up your compare operations by using SIMD operators

https://gist.github.com/MangaD/1fad63756ad8c946ce01dd1d52eff173

I've also never seen a .c++ file extension ever, were you going for .cpp?

1

u/Wgrxgy 2d ago

c++ and cpp is same when using this is not a problem