Skip to content

✨ Modern C++ 20 signature match / search library

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

SpriteOvO/sigmatch

Folders and files

NameName
Last commit message
Last commit date
Sep 11, 2023
Aug 5, 2021
Sep 11, 2023
Aug 5, 2021
Sep 11, 2023
Sep 11, 2023
Aug 11, 2023
Jul 2, 2021
Sep 11, 2023
Sep 11, 2023
Aug 21, 2024
Aug 21, 2024
Aug 21, 2024

Repository files navigation

logo
sigmatch

Modern C++ 20 Signature Match / Search Library

✨ Features

  • 🍃 Header-only, no dependencies, no exceptions.
  • ☕ Compile-time literal signature string parsing.
  • ❄️ Supports full-byte wildcards (?? or **) and semi-byte wildcards (1? or *B).
  • 🚀 Supports blocking (chunking) and multi-threaded for fast search.
  • 🎯 Supports searching in the current process, external processes and files.
  • 🍄 Customizable reader and target allow you to search on more targets (e.g. network traffic packets).

🌠 Examples

A quick example:

using namespace sigmatch_literals;

sigmatch::this_process_target target;
sigmatch::search_result result = target.in_module("**module_name**").search("1A ?? 3C ** 5* ?F"_sig);
for (const std::byte *address : result.matches()) {
    std::cout << "matched: " << address << '\n';
}

See /examples for more.

🍰 Todo

  • Complete CI for testing and documentation deployment.
  • Host the documentation on GitHub Pages.
  • Statistical tests coverage.
  • Complete benchmarks.
  • Test compilers other than MSVC.
  • Implement class executable_file_target.
  • Port to Linux.

📜 License

sigmatch is licensed under either of Apache-2.0 License or MIT License at your option.