AOBscan 📝


> AOBscan is a library for multi-threaded AOB memory scanning, aimed at malware analysis and reverse > engineering.

> This library implements helpful features for scanning for patterns in data slices or object files sections. (allowing > for extremely fast scans) ## Features - Single-threaded and multi-threaded scanning - Match selection using callback functions - IDA-style patterns: `48 8b ? ? ? 48 8c ?? ?? ?? ??` - Code-style signatures/masks: (`\x48\x8b\x00\x00\x00`, `..???`) - Hexadecimal strings: `488b??????` - Scan for pattern in an object file section _(feature: object-scan)_ ## Usage Add this to your `Cargo.toml`: ```toml [dependencies] aobscan = "0.3" ``` > **Example:** Scan for 48 8B ? ? ? in `some.bin` with all the available threads, and stop at the first > match. ```rust fn main() { let data = include_bytes!("some_file.bin"); let result = aobscan::Pattern::from_ida_style("48 8B ? ? ? ?") .unwrap() .with_all_threads() .build() .scan(data, |offset| { println!("Found pattern at offset: 0x{:x}", offset); false }); } ``` ### For a real-world example, check out the [AOBscan CLI](https://github.com/sonodima/aobscan-cli) twin project. ## Benchmark The results of the `benchmark` example are as follows: | CPU | MT Average | ST Average | MT Peak | |--------------------|------------|------------|------------| | Apple M1 Pro (10C) | 10.17 GB/s | 1.42 GB/s | 12.41 GB/s |