#pattern #scan #memory #signature #aob #hex-string #object-file

aobscan

AOBscan是一个用于多线程AOB内存扫描的库

8个版本

0.3.0 2022年11月17日
0.2.0 2022年10月29日
0.1.7 2022年10月3日
0.1.5 2022年9月29日

1648算法 中排名

Download history 5/week @ 2024-04-14 10/week @ 2024-04-21 12/week @ 2024-04-28 9/week @ 2024-05-05 12/week @ 2024-05-12 12/week @ 2024-05-19 5/week @ 2024-05-26 15/week @ 2024-06-02 10/week @ 2024-06-09 7/week @ 2024-06-16 9/week @ 2024-06-23 1/week @ 2024-06-30 5/week @ 2024-07-07 7/week @ 2024-07-14 6/week @ 2024-07-21 108/week @ 2024-07-28

每月 126 次下载
2 crates 中使用

MIT 许可证

37KB
387

AOBscan 📝


AOBscan是一个用于多线程AOB内存扫描的库,旨在用于恶意软件分析和逆向工程。

此库实现了在数据切片或对象文件部分中扫描模式的有用功能(允许进行极快的扫描)。

功能

  • 单线程和多线程扫描
  • 使用回调函数选择匹配项
  • IDA样式模式:48 8b ? ? ? 48 8c ?? ?? ?? ??
  • 代码样式签名/掩码:(\x48\x8b\x00\x00\x00..???
  • 十六进制字符串:488b??????
  • 在对象文件部分中扫描模式 (功能:object-scan)

用法

将此添加到您的 Cargo.toml

[dependencies]
aobscan = "0.3"

示例: 使用所有可用线程在 some.bin 中扫描 48 8B ? ? ?,并在第一次匹配时停止。

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
        });
}

有关真实世界的示例,请查看AOBscan CLI 配对项目。

基准测试

benchmark 示例的结果如下

CPU MT 平均 ST 平均 MT 峰值
Apple M1 Pro (10C) 10.17 GB/s 1.42 GB/s 12.41 GB/s

依赖关系

~28–540KB
~11K SLoC