OmerYilmazlar/zig-day-six-lab
GitHub: OmerYilmazlar/zig-day-six-lab
基于 Zig 的轻量级二进制模式扫描器,用于在文件中搜索十六进制模式和字符串特征。
Stars: 0 | Forks: 0
# 第六天:二进制模式扫描器 (Mini-YARA)
一个基于 Zig 的二进制模式扫描器,用于在文件中搜索十六进制模式和字符串。适用于恶意软件分析、取证和逆向工程。
## 功能特性
- **十六进制模式搜索**:搜索带有可选通配符 (`??`) 的字节模式
- **ASCII 字符串搜索**:查找 ASCII 和 UTF-16LE (宽字符) 字符串
- **上下文显示**:显示匹配项周围的字节
- **通配符**:在十六进制模式中使用 `??` 匹配任意字节
## 构建
```
# Standard 构建
zig build-exe patternscan.zig -O ReleaseSmall
# 优化的 Windows 构建
zig build-exe patternscan.zig -target x86_64-windows-gnu -O ReleaseSmall -fstrip -femit-bin="patternscan.exe"
```
## 用法
```
# 查找 MZ header (PE 文件)
patternscan file.exe "4D 5A"
# 带上下文查找 PE signature
patternscan file.exe "50 45 00 00" -c 16
# 使用通配符搜索
patternscan file.exe "68 ?? ?? ?? ?? C3"
# 查找 ASCII 字符串
patternscan file.exe "VirtualAlloc" --ascii
# 显示所有匹配项
patternscan file.exe "90 90" --all
```
## 选项
| 选项 | 描述 |
|--------|-------------|
| `-a, --ascii` | 将模式视为 ASCII 字符串(同时搜索 UTF-16) |
| `-n, --max N` | 显示的最大匹配数(默认:100) |
| `-c, --context N` | 显示匹配项周围的 N 个上下文字节 |
| `--all` | 显示所有匹配项(最多 10000 个) |
| `-h, --help` | 显示帮助 |
## 示例输出
```
=== Pattern Scan: suspicious.exe ===
File size: 45056 bytes
Pattern: 4D 5A (2 bytes)
[+] Match at offset 0x00000000
[4d][5a] 90 00 03 00 00 00
[M] [Z] . . . . . .
Found 1 match(es).
```
## 常见安全模式
| 模式 | 描述 |
|---------|-------------|
| `4D 5A` | DOS/PE 头 (MZ) |
| `50 45 00 00` | PE 签名 |
| `FF 15` | CALL [addr] 间接调用 |
| `FF 25` | JMP [addr] 间接跳转 |
| `68 ?? ?? ?? ?? C3` | PUSH addr; RET (shellcode) |
| `E8 ?? ?? ?? ??` | CALL 相对调用 |
| `C2 ?? 00` | RET n (stdcall) |
## 可疑 API 字符串(配合 --ascii 使用)
- VirtualAlloc, VirtualProtect
- CreateRemoteThread, WriteProcessMemory
- IsDebuggerPresent, SetWindowsHookEx
- GetProcAddress, LoadLibrary
## 相关工具
| 工具 | 描述 |
|------|-------------|
| **第三天** | 二进制字符串提取器 |
| **第四天** | PE 解析器 |
| **第五天** | 熵计算器 |
| **YARA** | 功能齐全的模式匹配 |
## 许可证
MIT 许可证 - 请参阅 LICENSE 文件
标签:DAST, PE文件分析, YARA替代, Zig语言, 二进制分析, 二进制模式扫描, 云安全运维, 云资产清单, 十六进制搜索, 域环境安全, 字符串提取, 字节序列匹配, 安全工具开发, 恶意软件分析, 数字取证, 文件搜索, 模糊匹配, 特征码匹配, 自动化脚本, 逆向工程, 静态分析工具