# ViperMonkey VBA 恶意宏仿真分析引擎

> VBA 解析与仿真引擎，由 Philippe Lagadec 创建，自 2017 年起主要由 Kirk Sayre 及其他贡献者开发，用于分析和去混淆 Microsoft Office 文件（如 Word、Excel、PowerPoint 和 Publisher 文档）中的恶意宏，也可处理 VBScript 文件和内含 VBScript 的 HTA 文件。vmonkey 命令通过 oletools 的 olevba 读取宏，从自动运行入口或分析人员指定的函数开始仿真，报告记录到的行为（例如创建进程），并可列出中间 IOC 和代码将写出的文件；vbashell 则是交互式 VBA shell。其 Python API 可求值 VBA 代码片段、遍历并仿真单个代码块、替换函数以及对代码去混淆。

- 类型：工具
- 目标：二进制
- 类别：调试与动态分析
- 关联：基础工具
- 来源复核于：2026-10-20
- 收录于：2026-11-02
- 原始资源：<https://github.com/decalage2/ViperMonkey>
- 一手来源：<https://github.com/decalage2/ViperMonkey/blob/73547cef7f82dbcb10e22e36b84b558a07f7d21d/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/vipermonkey/>
- 记录 JSON：<https://awesomerea.org/resources/vipermonkey/record.json>
- 英文版：[English](https://awesomerea.org/resources/vipermonkey/index.md)

## 使用条件与局限

- 版本号为 1.0.3，于 2021 年写入 setup.py 和 vmonkey.py；项目没有 GitHub 发布版本、标签或 PyPI 包，需从 master 分支压缩包安装。所审阅的 master 提交日期为 2024-04-25，也是审阅时的最新提交，它将 oletools 版本上限设为 0.60.1。README 称自 2017 年 11 月起大部分开发在 Kirk Sayre 的分支中进行，并定期同步到本仓库；审阅时该分支的 master 比本仓库多 162 个提交、少 8 个提交，其最新提交日期为 2021-08-04。
- 运行于 Python 2.7：README 介绍了在 PyPy 2.7（推荐，速度约快五倍）或 CPython 2.7 下的安装方法，API 教程也使用 Python 2 的 print 语句。依赖版本按该解释器固定，包括 pyparsing 2.2.0（更新的版本会在部分样本上解析出错或耗尽内存）、unidecode 1.2.0 和 oletools 0.56.1–0.60.1，另需 olefile、xlrd、xlrd2、prettytable、colorlog 和 colorama。也可以使用 docker/dockermonkey.sh：它拉取第三方的 haroldogden/vipermonkey 镜像，用 git pull 更新镜像内的代码，启动无界面的 LibreOffice，断开容器网络，再以 -s、--iocs 和 --jit 选项运行 vmonkey。
- 可疑文档或 VBScript 文件由使用者提供；仓库不含任何样本，测试只有四个 Python 模块。README 称 ViperMonkey 仍属实验性质，只对部分恶意文档有效，且速度极慢，并建议使用 -s 去除无用语句。--jit 会把 VB 循环转换为 Python 并通过 eval 执行，README 指出这存在安全风险，建议使用 Docker 沙箱；释放的文件（包括在 Office 文件中发现的内嵌 PE 文件）会写入 <文件名>_artifacts 目录，并报告其 SHA-256 哈希。分析结果取决于引擎对 VBA、Office 对象以及所调用 DLL 或 ActiveX 对象的仿真程度，README 也说明这类仿真既困难又不完整。
- README 和源码头部声明 BSD 两条款许可，版权归 Philippe Lagadec（2015–2020）；仓库没有许可证文件，因此 GitHub 未识别出许可证，README 中针对 thirdparty 文件夹的例外说明所指的文件夹在所审提交中并不存在。

## 一手来源

1. <https://github.com/decalage2/ViperMonkey/blob/73547cef7f82dbcb10e22e36b84b558a07f7d21d/README.md>
2. <https://github.com/decalage2/ViperMonkey/blob/73547cef7f82dbcb10e22e36b84b558a07f7d21d/setup.py>
3. <https://github.com/decalage2/ViperMonkey/blob/73547cef7f82dbcb10e22e36b84b558a07f7d21d/requirements.txt>
4. <https://github.com/decalage2/ViperMonkey/blob/73547cef7f82dbcb10e22e36b84b558a07f7d21d/vipermonkey/vmonkey.py>
5. <https://github.com/decalage2/ViperMonkey/blob/73547cef7f82dbcb10e22e36b84b558a07f7d21d/vipermonkey/vbashell.py>
6. <https://github.com/decalage2/ViperMonkey/blob/73547cef7f82dbcb10e22e36b84b558a07f7d21d/docker/dockermonkey.sh>
7. <https://github.com/decalage2/ViperMonkey/blob/73547cef7f82dbcb10e22e36b84b558a07f7d21d/docs/APITutorial.md>
8. <https://github.com/decalage2/ViperMonkey/tree/73547cef7f82dbcb10e22e36b84b558a07f7d21d/tests>
9. <https://github.com/kirk-sayre-work/ViperMonkey/tree/29078c1042645855a856fabc8db0a8e7780faa22>

## 同分区更多条目：原生二进制

- [BREAD BIOS 实模式调试器](https://awesomerea.org/zh/resources/bread-bios-debugger/index.md) · 工具
- [Mergen 反混淆 LLVM IR 提升器](https://awesomerea.org/zh/resources/mergen/index.md) · 工具
- [readpe（原名 pev）PE 文件分析工具集](https://awesomerea.org/zh/resources/readpe/index.md) · 工具
- [malware-jail JavaScript 恶意代码沙箱](https://awesomerea.org/zh/resources/malware-jail/index.md) · 工具
- [gxpc XPC 通信嗅探工具](https://awesomerea.org/zh/resources/gxpc/index.md) · 工具
- [Manticore 符号执行工具](https://awesomerea.org/zh/resources/manticore/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
