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语言, 二进制分析, 二进制模式扫描, 云安全运维, 云资产清单, 十六进制搜索, 域环境安全, 字符串提取, 字节序列匹配, 安全工具开发, 恶意软件分析, 数字取证, 文件搜索, 模糊匹配, 特征码匹配, 自动化脚本, 逆向工程, 静态分析工具