3个版本 (稳定)
1.2.0 | 2021年1月23日 |
---|---|
1.1.1 | 2020年12月31日 |
0.1.1 | 2020年8月13日 |
0.1.0 |
|
#1710 in 解析器实现
每月54次下载
18KB
295 行
patternscan
根据给定的模式搜索连续的字节序列。模式可以包含支持的通配符字符,如下所示。
通配符
?
匹配任何字节
示例模式
fe 00 68 98
- 仅匹配fe 00 68 98
8d 11 ? ? 8f
- 可能匹配8d 11 9e ef 8f
或8d 11 0 0 8f
等
文档
许可证
此项目采用MIT许可证 - 请参阅LICENSE.md以获取详细信息。
lib.rs
:
根据给定的模式搜索连续的字节序列。模式可以包含支持的通配符字符,如下所示。
通配符
?
匹配任何字节
示例模式
fe 00 68 98
- 仅匹配fe 00 68 98
8d 11 ? ? 8f
- 可能匹配8d 11 9e ef 8f
或8d 11 0 0 8f
等
示例用法
使用scan
函数在Read
的输出中搜索模式。使用Cursor
在内存中的字节数组中扫描可能如下所示
use patternscan::scan;
use std::io::Cursor;
let bytes = [0x10, 0x20, 0x30, 0x40, 0x50];
let pattern = "20 30 40";
let locs = scan(Cursor::new(bytes), &pattern).unwrap(); // Will equal vec![1], the index of
// the pattern
任何实现Read
的结构都可以作为读取器传递,以便扫描模式的实例,因此可以在可执行文件中扫描字节序列,如下所示
use patternscan::scan;
use std::fs::File;
let reader = File::open("somebinary.exe").unwrap();
let instruction = "A3 ? ? ? ?";
let locs = scan(reader, &instruction).unwrap();
有关此模块的更多示例用法,请参阅测试