A cross-platform signature scanning library for finding patterns in memory/data buffers. This monorepo contains implementations in multiple programming languages.
- C++ - Original implementation with Visual Studio project
- Node.js - JavaScript/Node.js port for buffer scanning
- Rust - Rust implementation (planned)
Signature scanning allows you to find patterns in memory or data buffers using hex signatures with wildcards. This is useful for:
Video about Signiture Scanning- Easily find addresses.
- Pulls out an address using XXXXXXXX
- Magic
This project was previously on google code here: https://code.google.com/p/signiturescanner/ but github is nicer.
You can search with a ? for wildcard or XXXXXXXX where there is an address you want back. This can be usefull for finding code to hook,detour,modify or memory pointers in code that you want. When making signitures you use wildcards to represent things that may change when recompiled, such as addresses. Returns NULL if not found
--- Example Usage:
Init
signature_scanner* sig = new signature_scanner();
Get a memory address in code at XXXXXXXX with wildcards.
DWORD_PTR address = signature_scanner->search("3AB2DFAB????????3FBACD300200A1XXXXXXXXB1C4DA");
Find Second instance 90/NOP
DWORD_PTR address = signature_scanner->search("90");
if (address!=NULL)
{
address = signature_scanner->search("90",0,true,address)
if (address!=NULL)
{
// Found it at address
}
else
{
// Not found 2nd time
}
}
else
{
// Found first time
}
Finding Text
DWORD_PTR address = signature_scanner->search_text("Hello World");
There is also a find_all method.
This is useful for game memory modification in multiple areas.
For example the developers have a MOV EAX, [ECX+WeaponID*4], DEC EAX, MOV [ECX+WeaponID*4], EAX that decreases ammo but it is copy pasted to every function for every weapon's shoot. Like in Quake 1, 2, 3 etc.
You could NOP all of them. Or detour them all to only NOP for your player ID.
Do what you want license, IDGAF~
