9ith4b/binary-tracer

GitHub: 9ith4b/binary-tracer

基于 Intel Pin 的 Windows 动态二进制分析工具,针对恶意软件、加壳程序和 VMProtect 保护代码采集 API、调用树、内存及行为证据并生成离线报告。

Stars: 0 | Forks: 0

# binary-tracer `binary-tracer`(工具名:MalwarePinAnalyzer)是一个基于 Intel Pin 的 Windows 动态二进制分析工具。它面向恶意程序、加壳程序和 VMProtect 保护代码的受控研究, 能够采集 API、函数调用、内存、进程、反分析与局部指令执行证据,并离线生成 JSON、 JSONL 和文本报告。 ## 主要能力 - 自动发现样本实际调用的命名 Windows API; - 使用 JSON 配置批量指定需要提取关键参数的 API; - API 调用时间线和按线程组织的 API 调用树; - 可选全量动态函数调用树,支持主 EXE 和多个显式样本 DLL; - x64 与 x86/WOW64 共用一套 C++ 源码和二进制协议; - 模块、线程、进程和子进程生命周期; - 本地/远程内存分配、保护、写入、执行和私有内存 Dump; - Section/View、Native API 与 syscall 观察; - 文件、注册表、网络、进程、互斥体、服务、计划任务和 IOC 汇总; - 进程注入与 Process Hollowing 候选证据链; - 反调试、时间、CPUID/RDTSC、异常、PEB/TEB、环境与自校验观察; - 有界 VMP ROI 指令 Trace、dispatcher/handler slice、VIP/VSP/rolling-key 候选; - handler replay、内置语义验证和可选 Triton 后端。 工具坚持保留证据语义:`observed`、`neutralized`、`forced` 和 `inferred` 不会混为 一谈。注入、Hollowing、解包和 VMP 寄存器角色均属于候选结论,而不是自动恶意判定。 ## 支持范围 | 项目 | 当前支持 | |---|---| | 宿主系统 | Windows 10/11 x64 | | 目标程序 | 原生 x64、WOW64 x86 | | Pin | Intel Pin 4.3.99850,JIT 模式 | | 编译器 | Visual Studio 2026 18.7.3,ClangCL,C++17 | | SDK | Windows SDK 10.0.26100.0 | | 日志协议 | binary protocol v1,小端、固定宽度字段 | | 离线分析 | Python 3.10+ | 原生 32 位 Windows 的构建产物和验收入口已经具备,但仍需要在真实原生 x86 系统 完成最终运行确认。 ## 仓库结构 pintool/ Intel Pin C++ 采集器 analyzer/ Python 解码、关联和报告模块 rules/ 运行配置、API 参数配置示例与 JSON Schema tests/ 离线测试和无恶意 x64/x86 Pin 集成样本 deployment/ 一键入口、中文手册和原生 x86 验收脚本 scripts/ 发布包构建脚本 docs/ 分阶段设计与实施文档 `x64/`、`x86/`、`dist/`、`output/`、日志、Dump 和测试二进制是生成内容,不提交到 仓库。 ## 构建 仓库应位于 Intel Pin 源码树的 `source\tools\MyPinTool`,或使用等价的 Pin include/ library 路径配置。Intel Pin 本身不包含在仓库中。 & 'D:\Microsoft Visual Studio\18\Professional\MSBuild\Current\Bin\MSBuild.exe' ` '.\MalwarePinAnalyzer-clang.vcxproj' /t:Build ` /p:Configuration=Release /p:Platform=x64 /nologo & 'D:\Microsoft Visual Studio\18\Professional\MSBuild\Current\Bin\MSBuild.exe' ` '.\MalwarePinAnalyzer-clang.vcxproj' /t:Build ` /p:Configuration=Release /p:Platform=Win32 /nologo 输出: - `x64\Release\MalwarePinAnalyzer.dll` - `x86\Release\MalwarePinAnalyzer.dll` 生成可复制部署包: .\scripts\package_release.ps1 -Version 1.1.0 完整工具链配置见 [`toolchain.md`](toolchain.md)。 ## 快速开始 进入生成的 `dist\MalwarePinAnalyzer-1.1.0` 目录: .\mpa.ps1 run -PinRoot E:\pin -Target C:\samples\sample.exe 入口会自动识别目标架构、选择 `pin.exe` 或 `pin32.exe`、采集二进制事件、校验日志, 然后生成完整报告套件。 目标需要参数时: .\mpa.ps1 run -PinRoot E:\pin -Target C:\samples\sample.exe ` -TargetArguments '--config','C:\samples\sample.dat','--quiet' 跟随本次运行创建的子进程: .\mpa.ps1 run -PinRoot E:\pin -Target C:\samples\dropper.exe -FollowChild 单实例程序可能把请求交给已经存在、未被 Pin 注入的旧进程,然后立即退出。此时应先 关闭旧实例,或使用目标程序提供的独立实例参数。`-FollowChild` 只能跟踪本次创建的 新子进程,不能接管早已存在的进程。 ## 自动 API 发现与参数配置 默认 `-ApiTracking auto` 会记录从样本作用域进入的命名 API,无需维护完整硬编码 列表。首先查看 `reports\api-inventory.json`,了解程序实际调用了哪些 API。 需要提取 `CreateFileW` 路径等关键参数时,使用配置文件: .\mpa.ps1 run -PinRoot E:\pin -Target C:\samples\sample.exe ` -ApiConfig .\rules\api-capture.example.json 示例: { "schema_version": 1, "captures": [ {"api": "CreateFileW", "parameters": ["lpFileName"]}, {"api": "CreateProcessW", "parameters": ["lpApplicationName", "lpCommandLine"]}, {"api": "CopyFileW", "parameters": ["lpExistingFileName", "lpNewFileName"]} ] } 支持 `uint32`、`uint64`、`pointer`、`handle`、`bool`、`ansi_string`、 `utf16_string` 和有界 `buffer`。字符串与 Buffer 使用 `PIN_SafeCopy` 读取,并受到 硬上限约束。Schema 和完整示例位于 [`rules/`](rules/)。 ## 分析预设 | 预设 | 用途 | 主要行为 | |---|---|---| | `quick` | 快速初筛 | 减少高频指令观察,优先速度 | | `standard` | 首次分析 | 默认 API、行为、内存和受支持 Buffer 采集 | | `deep` | 深度分析 | 全量函数树、深度写入、私有执行 Dump、全部 syscall | | `vmp` | VMProtect 局部研究 | 有界 ROI 指令、寄存器、内存和分支状态 | .\mpa.ps1 run -PinRoot E:\pin -Target C:\samples\sample.exe -Preset deep ## 结果 一次标准运行会生成: analysis-results\sample-时间戳\ ├─ run-summary.json ├─ raw\events.bin ├─ dumps\ └─ reports\ ├─ README.md ├─ analysis-summary.json ├─ api-inventory.json ├─ api-timeline.json ├─ api-call-tree.json ├─ api-call-tree.txt ├─ full-call-tree.json ├─ behavior-report.json ├─ ioc-report.json ├─ memory-timeline.json ├─ injection-report.json ├─ hollowing-report.json ├─ anti-analysis-report.json ├─ vmp-trace.json ├─ vmp-analysis.json └─ events.jsonl 推荐先阅读每次运行生成的 `reports\README.md` 和 `api-inventory.json`,再进入行为、 调用树、IOC、内存或 VMP 报告。 ## 测试 离线测试: python -m unittest discover -s tests -p "test_*.py" -v Pin 集成测试会运行仓库提供的无恶意 x64/x86 测试程序。测试不会使用真实恶意样本。 当前项目记录的完整验收为 169/169:98 项离线测试、36 项 x64 Pin 测试和 35 项 x86/WOW64 Pin 测试;另有 4 项可选 Triton 测试在未安装后端时跳过。 ## 文档 - [中文完整使用说明](deployment/USER_GUIDE.zh-CN.md) - [工具链、构建与高级命令](toolchain.md) - [项目阶段与验收进度](PROJECT_PROGRESS.md) - [原始实施计划](VMP%20恶意程序动态分析工具代码实施计划.md) ## 已知边界 - 工具不是自动 VMProtect 去虚拟化器;VMP 结果是局部动态证据和候选分析; - Windows JIT 模式不能依赖事后附加来补救已经运行的旧单实例进程; - `neutralize` 和 `force` 只修改明确批准的反调试事实; - 原始日志应作为证据保留,离线推断不能替代人工复核; - 未知样本必须在合法授权和隔离环境中运行。
标签:AI合规, C++, DAST, Intel Pin, 云资产清单, 代码保护分析, 动态二进制分析, 恶意软件分析, 数据擦除, 逆向工具, 逆向工程