Header-only C++ pattern scanner
Ultra-fast signature scanner leveraging multithreading and SSE (Streaming SIMD Extensions).
SigHunt is a lightweight, header-only C++ library designed for pattern scanning both in external processes and in the current (internal) module.
It’s built for speed and simplicity — fully multithreaded and accelerated with SSE instructions, making it ideal for high-performance memory scanning applications.
- 🧠 Header-only – just include
SigHunt.h, no build setup required. - ⚡ Multithreaded scanning – automatic parallelization for faster results.
- 🧩 SSE optimized – uses vectorized comparisons for ultra-fast byte matching.
- 🔍 External & internal scanning – supports both process memory and local scanning.
- 🧱 Cross-module compatible – works with any PE module (DLL/EXE).
- 🧼 Clean and modern C++17 design – no dependencies, no macros, no hassle.
#include "SigHunt.h"
#include <chrono>
int main()
{
auto start = std::chrono::high_resolution_clock::now();
// External scanning
uintptr_t addr = SigHunt::External::Find("CalculatorApp.exe",
"E8 C3 ?? ?? ?? ?? ?? 90");
// Internal scanning
uintptr_t addr2 = SigHunt::Internal::Find("E8 C3 ?? ?? ?? ?? ?? 90");
// Find all external matches
std::vector<uintptr_t> allResExternal = SigHunt::External::FindAll("CalculatorApp.exe",
"E8 C3 ?? ?? ?? ?? ?? 90");
// Find all internal matches
std::vector<uintptr_t> allResInternal = SigHunt::Internal::FindAll("E8 C3 ?? ?? ?? ?? ?? 90");
// VTable instances from first match
std::vector<uintptr_t> vtableInstances = SigHunt::VTableScanner::FindVTableInstances(addr);
auto end = std::chrono::high_resolution_clock::now();
auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
std::cout << "External: 0x" << std::hex << addr << std::endl;
std::cout << "Internal: 0x" << std::hex << addr2 << std::endl;
std::cout << "All External matches: " << std::dec << allResExternal.size() << std::endl;
std::cout << "All Internal matches: " << std::dec << allResInternal.size() << std::endl;
std::cout << "VTable instances: " << std::dec << vtableInstances.size() << std::endl;
std::cout << "Total scan time: " << std::dec << ms.count() << "ms\n";
return 0;
}Simply drop SigHunt.h into your project and include it:
#include "SigHunt.h"No linking, no setup.
The library is entirely header-only and self-contained.
- Tested on Windows 10/11 (x64)
- Requires a compiler supporting C++17 or higher
- Best performance on CPUs with SSE2+ support (almost all modern CPUs)
This project is licensed under the MIT License — you're free to use, modify, and distribute it with attribution.
See the LICENSE file for details.
Created by Bourdon94m — passionate about reverse engineering, low-level C++, and system internals.
Contributions, improvements, or optimizations are always welcome.
