4个版本
0.1.3 | 2024年3月6日 |
---|---|
0.1.2 | 2024年3月6日 |
0.1.1 | 2024年3月6日 |
0.1.0 | 2024年3月6日 |
#59 在 Windows API
每月 39 次下载
22KB
340 行
sigmatch
使用Rust编写的针对Windows平台的内存签名搜索库。
这是从我的另一个C++项目迁移的基本版本,更多功能即将推出!
快速使用
假设您已通过 IDA-Pro-SigMaker 获取了签名。
签名类型 | 示例预览 |
---|---|
IDA签名 | E8 ? ? ? ? 45 33 F6 66 44 89 34 33 |
x64Dbg签名 | E8 ?? ?? ?? ?? 45 33 F6 66 44 89 34 33 |
C字节数组签名 + 字符串掩码 | \xE8\x00\x00\x00\x00\x45\x33\xF6\x66\x44\x89\x34\x33 x????xxxxxxxx |
C原始字节签名 + 位掩码 | 0xE8, 0x00, 0x00, 0x00, 0x00, 0x45, 0x33, 0xF6, 0x66, 0x44, 0x89, 0x34, 0x33 0b1111111100001 |
[dependencies]
anyhow = "1.0"
sigmatch = "0.1"
fn main() {
let Ok(mut sker) = sigmatch::Seeker::with_name("user32.dll") else {
return;
};
// IDA sig
let Ok(_ida_example) = sker.search("E8 ? ? ? ? 45 33 F6 66 44 89 34 33") else {
return;
};
// x64dbg sig
let Ok(_x64dbg_example) = sker.search("E8 ?? ?? ?? ?? 45 33 F6 66 44 89 34 33") else {
return;
};
// c sig + mask
let Ok(_c_example) = sker.raw_search(
b"\xE8\x00\x00\x00\x00\x45\x33\xF6\x66\x44\x89\x34\x33",
"x????xxxxxxxx",
) else {
return;
};
// rebind and reversese_search
let _ = || -> anyhow::Result<()> {
// If the module name is "main", then retrieve the main module.
let _rebind_example = sker.bind("main")?.reverse_search("ab cd ?? ef")?;
Ok(())
}();
// new Seeker
let mut sker1 = sigmatch::Seeker::new();
if sker1.bind("ntdll.dll").is_err() {
return;
}
}
待办事项
-
支持链式调用。
-
允许指定搜索地址。
-
基于段的搜索支持。
-
支持限制搜索。
-
单元测试
-
改进的文件组织
示例
更多示例请参阅 示例。
依赖项
~132MB
~2M SLoC