0x355/sigscan
GitHub: 0x355/sigscan
基于 Rust 编写的 Windows x64 进程与 PE 文件特征码扫描器,帮助逆向工程师在不同版本和 ASLR 环境下稳定定位函数和代码结构。
Stars: 0 | Forks: 0
# sigscan
一个快速、只读的**签名/特征码扫描器**,用于 Windows x64 进程和 PE 模块,使用 Rust 编写。
专为逆向工程研究而构建,无注入、无写入、无 shellcode。
```
[+] Process : Notepad.exe (PID 22224)
[+] Module : Notepad.exe
[+] Range : 00007FF7CB3B0000 - 00007FF7CB6B1000 (3076 KiB)
[MATCH]
address : 00007FF7CB3B1123
offset : +0x1123
bytes : E8 18 A5 14 00
[+] Total matches: 1
```
## 什么是签名扫描?
**签名**(或**特征码**)是一小段字节序列,用于唯一标识已编译二进制文件中的特定指令或代码结构。逆向工程师使用签名在不同版本的二进制文件中重新定位函数或数据结构,与其硬编码一个随每次更新而改变的地址,不如搜索周围的字节模式,这要稳定得多。
游戏研究中的一个典型用例:
1. 在反汇编器(IDA、Ghidra、Binary Ninja...)中找到一个感兴趣的函数。
2. 从函数序言或唯一指令中提取一段简短且独特的字节序列。
3. 使用 `sigscan` 在实时进程的运行中定位该序列,无论 ASLR 或版本如何变化,都能为您提供当前地址。
## 通配符匹配
真实代码通常包含直接嵌入在指令中的绝对地址或相对偏移量。这些操作数字节在不同的运行(ASLR)或不同的版本之间会发生变化。
**通配符**允许您编写一个模式来匹配不变的操作码字节,同时忽略可变的操作数字节。
语法采用 IDA 风格的十六进制,使用 `??` 表示通配符:
```
48 8B ?? ?? ?? 89
^^ ^^ ^^ <- exact bytes, must match precisely
^^ ^^ ^^ <- wildcards, match any byte
```
| 标记 | 含义 |
|-------|---------|
| `48` | 精确匹配字节 `0x48` |
| `??` | 匹配任意单个字节 |
| `?` | `??` 的别名 |
在内部,解析器将其转换为 `Vec
标签:Conpot, DAST, Ghidra, IDA Pro, PE模块, Rust, Windows安全, x64, 二进制分析, 云安全运维, 云资产清单, 内存扫描, 十六进制搜索, 反ASLR, 只读扫描, 可视化界面, 地址定位, 字典生成, 字节序列, 恶意软件分析, 无注入, 模式扫描, 游戏安全, 游戏逆向, 特征码扫描, 端点可见性, 网络流量审计, 进程扫描, 逆向工程, 通知系统, 通配符匹配