Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
pyrebox — 基于QEMU的Python可脚本化逆向工程沙箱,一个虚拟机仪器与检查框架 | Kitploit
工具/GitHubGitHub/cisco-talos/pyrebox
动态分析 (沙盒)内存取证逆向工程调试器恶意软件分析数字取证二进制分析学习与教育Archived
GitHubcisco-talos/pyrebox

pyrebox

基于QEMU的Python可脚本化逆向工程沙箱,一个虚拟机仪器与检查框架

查看仓库
1.7k2542年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

================ 已归档项目

此项目已被归档,其问题追踪已锁定。该项目将仅作为参考用途保留。

.. image:: docs/media/pyrebox_logo_light_bg.png

.. _QEMU: http://qemu.org/ .. _DECAF: https://github.com/sycurelab/DECAF .. _S2E: https://github.com/dslab-epfl/s2e .. _AVATAR: https://github.com/avatartwo .. _PANDA: https://github.com/panda-re/panda .. _Volatility: http://www.volatilityfoundation.org/ .. _BUILD: BUILD.rst .. _here: https://github.com/Cisco-Talos/pyrebox/issues .. _slides: https://github.com/Cisco-Talos/pyrebox/tree/master/docs/pyrebox_hitb_ams.pdf .. _available: https://github.com/Cisco-Talos/pyrebox/tree/master/docs/pyrebox_euskalhack.pdf .. _scripts: https://github.com/Cisco-Talos/pyrebox/tree/master/scripts .. _readthedocs.io: https://pyrebox.readthedocs.io/en/latest/ .. _questions: https://github.com/Cisco-Talos/pyrebox/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20 .. _presentation: https://www.youtube.com/watch?v=F2voG87obzM .. _Contest: https://volatility-labs.blogspot.com/2017/11/results-from-5th-annual-2017-volatility.html

PyREBox 是一个 Python 脚本化的逆向工程沙箱。它基于 QEMU,旨在通过提供动态分析和调试能力,从不同的视角辅助逆向工程。PyREBox 允许你检查正在运行的 QEMU 虚拟机,修改其内存或寄存器,并通过创建简单的 Python 脚本自动化任何类型的分析来对其执行进行插桩。QEMU(作为全系统模拟器运行时)模拟整个系统(CPU、内存、设备等)。通过使用 VMI 技术,它无需对客户操作系统进行任何修改,即可在运行时透明地从其内存中检索信息。

多个学术项目,如 DECAF_、PANDA_、S2E_ 或 AVATAR_,此前已利用基于 QEMU 的插桩技术来克服逆向工程任务。这些项目允许用 C/C++ 编写插件,并实现了一些高级特性,如动态污点分析、符号执行,甚至执行轨迹的记录与回放。通过 PyREBox,我们旨在应用这一技术,同时保持设计简洁,并注重系统对威胁分析师的可操作性。

PyREBox 在 2017 年赢得了 Volatility 插件竞赛(Contest_)!

该工具于 2018 年在 HITB Amsterdam 上展示。你可以查看幻灯片(slides_),或观看演示(presentation_)。它还在第三届 EuskalHack 安全大会(幻灯片 available_)上展示。

最新动态

请记住拉取 PyREBox 的最新版本,以享受其最新功能。PyREBox 正在积极开发中,更多酷炫功能即将到来!master 分支应始终包含稳定版本,而 dev 分支则包含最新的进行中功能。以下公告列表指的是 master 分支,以及开发变更合并到 master 的日期。

  • [Dec 5, 2019] PyREBox3 的 Beta 版本,已在 python3migration 分支上就绪。 该工具已移植到 Python3 和 Volatility3。插件尚未移植。
  • [Jun 21, 2019] 将 QEMU 升级到 4.0.0 版本,支持 MTTCG(多线程 TCG)。 特别感谢 @richsurgenor 对此升级的宝贵贡献。
  • [Jun 17, 2019] 合并 dev 分支(Malware monitor 2)。
  • [Jun 17, 2019] 鼠标移动自动化。
  • [Jun 17, 2019] 升级 volatility。
  • [Oct 17, 2018] 添加了从 Windows 客户机获取系统时间的 API 函数。
  • [Oct 17, 2018] 在 BP(断点)类中添加了对符号的支持。
  • [Oct 17, 2018] 添加了符号缓存(主机文件)。参见示例配置文件(pyrebox.conf.WinXPSP3x86)。
  • [Oct 17, 2018] 更改符号获取方式,从磁盘读取 DLL 文件。
  • [Oct 10, 2018] 添加了获取未映射内存页的实验性支持。
  • [Oct 10, 2018] 添加了 The Sleuth Kit 集成。
  • [Aug 02, 2018] 添加了自动运行脚本。
  • [Jul 26, 2018] 上传了 EuskalHack 2018 演示的幻灯片。
  • [Jul 02, 2018] 修复以支持 CentOS 7。
  • [Jun 25, 2018] 添加了在 EuskalHack 2018 上展示的脚本。
  • [May 31, 2018] 升级到 Qemu v2.12.0。
  • [May 29, 2018] 添加了从 Python 脚本调用触发函数(C/C++)的可能性。
  • [May 29, 2018] 更改了回调参数格式。 参见文档。默认仍为旧格式。
  • [Apr 28, 2018] 为 PyREBox 的新功能和潜在不稳定功能创建了开发分支。
  • [Apr 13, 2018] 在 HITB Amsterdam(CommSec 轨道)上展示了 PyREBox。
  • [Apr 13, 2018] 添加了恶意软件监控脚本(mw_mon)。
  • [Mar 08, 2018] 触发器现在针对系统中的所有进程(而不仅仅是监控的进程)调用。参见文档。
  • [Mar 08, 2018] 更改了内存读/写回调参数。参见文档和示例。
  • [Mar 08, 2018] 添加了物理内存地址读/写断点。
  • [Mar 08, 2018] 添加了模块加载和卸载回调。
  • [Nov 02, 2017] 为 Linux 32 和 64 位添加了客户代理。
  • [Oct 23, 2017] 为 Windows 32 和 64 位添加了客户代理。
  • [Oct 11, 2017] 添加了 Linux 模块符号解析。
  • [Sep 22, 2017] 添加了对模块重载的支持。
  • [Sep 20, 2017] 向 BP 类添加了自定义函数回调。
  • [Sep 20, 2017] 升级到 Qemu v2.10.0。
  • [Aug 31, 2017] 对 Linux 客户机的部分支持。

安装

提供了一个构建脚本。有关依赖项的具体细节,请参见 BUILD_。我们还提供了一个 Dockerfile。

文档

该项目的文档托管在 readthedocs.io_。

错误、问题与支持

如果你认为发现了错误,请在此处(here_)报告。

在创建新问题之前,请先浏览其他用户提出的问题(questions_)。

该程序按“原样”提供,不保证任何支持。尽管如此,为了帮助我们解决你的问题,请提供尽可能多的信息以便重现错误:

  • 用于编译和运行 PyREBox 的操作系统。
  • 正在使用的具体操作系统版本和模拟目标。
  • 你试图运行的 shell 命令/脚本/任务。
  • 有关错误的任何信息,如错误消息、Python(或 IPython)堆栈跟踪,或 QEMU 堆栈跟踪。
  • 任何其他相关信息。

路线图

  • VM 镜像配置和管理控制台。
  • 支持 ARM、MIPS 等架构。
  • 完成对 GNU/Linux 客户系统的支持(参见问题)。

启动虚拟机

PyREBox 基于 QEMU,因此要在 PyREBox 中启动虚拟机,你需要像启动 QEMU 虚拟机一样运行它。提供了几个示例脚本:start_i386.sh、start_x86_64.sh,你可以将它们用作示例。

目前唯一支持的 QEMU 监控器选项是 stdio(-monitor stdio)。

该项目目标

  • 提供一个全系统模拟平台,具有用于检查模拟客户系统的简单接口。

    • 对系统事件的细粒度插桩。
    • 基于 volatility 的集成虚拟机自省(VMI)。无需在客户机中安装代理或驱动程序。
    • 基于 IPython 的 shell 接口。
    • 基于 Python 的脚本引擎,允许将基于该语言的任何安全工具集成到脚本中(最大的生态系统之一)。
  • 设计简洁,与 QEMU 解耦。许多基于 QEMU 构建的项目在 QEMU 升级后不会随之演进,从而错过了新功能和优化以及安全更新。为实现这一目标,PyREBox 实现为一个独立的模块,可以与 QEMU 一起编译,只需进行最少的修改。

  • 支持不同架构。目前,PyREBox 仅支持 x86 和 x86-64 位架构的 Windows,但其设计允许支持其他架构,如 ARM、MIPS、PowerPC,以及其他操作系统。

IPython shell

启动 PyREBox shell 就像在 QEMU 的监控器上输入 sh 命令一样简单。它将立即启动一个 IPython shell。该 shell 会记录命令历史以及已定义的变量。例如,你可以保存一个值,并在稍后执行的不同时间点(当再次启动 shell 时)恢复它。PyREBox 利用了 IPython 所有可用的特性,如自动完成、命令历史、多行编辑以及自动命令帮助生成。

PyREBox 将允许你以相当隐蔽的方式调试系统(或进程)。与传统的调试器(它们驻留在被调试的系统中,甚至会修改被调试进程的内存以插入断点)不同,PyREBox 完全位于被检查系统之外,并且不需要在客户机中安装任何驱动程序或组件。

.. image:: docs/media/breakpoint.gif

PyREBox 提供了完整的命令集来检查和修改运行中虚拟机的状态。只需输入 list_commands 即可获得完整列表。你可以通过输入 vol 和相应的 volatility 命令来运行任何 volatility 插件。要获取可用 volatility 插件的完整列表,可以输入 list_vol_commands。该列表是自动生成的,因此也会显示你安装在 PyREBox volatility/ 路径下的任何 volatility 插件。

你也可以定义自己的命令!只需在脚本中声明一个函数并加载即可。

如果你需要比命令更强大的表达能力,可以编写利用 API 的 Python 代码片段。有关 API 的详细描述,请参见 文档_ 或在 shell 中输入 help(api)。

.. image:: docs/media/stack.gif

脚本化

PyREBox 允许动态加载脚本,这些脚本可以注册当某些事件发生时(如指令执行、内存读/写、进程创建/销毁等)被调用的回调函数。

鉴于 PyREBox 与 Volatility 集成,它将允许你在 Python 脚本中利用所有 volatility 内存取证插件。许多最著名的逆向工程工具都是用 Python 实现的,或者至少具有 Python 绑定。我们的方法允许将其中任何工具集成到脚本中。

最后,由于 Python 回调在频繁事件(如指令执行)上可能会引入性能损失,因此还可以创建 触发器。触发器 是本地代码插件(用 C/C++ 开发),可以在运行时的任何事件上动态插入,并在 Python 回调执行之前运行。这允许限制命中 Python 代码的事件数量,以及在本地代码中预计算值。

在此代码库中,你将找到示例脚本(scripts_),这些脚本可以帮助你编写自己的代码。欢迎贡献!

致谢

首先,PyREBox 离不开 QEMU_ 和 Volatility_。我们感谢它们的开发者和维护者所做的重要工作。

PyREBox 受到多个学术项目的启发,如 DECAF_ 和 PANDA_。事实上,PyREBox 支持的许多回调与 DECAF_ 中的回调等价,且插桩背后的概念基于这些工作。

PyREBox 受益于第三方代码,这些代码可以在目录 pyrebox/third_party 下找到。对于每个第三方项目,我们均包含其原始许可证的说明、从该项目中获取的原始源代码文件,以及由 PyREBox 使用的源代码文件的修改版本(如果适用)。

下载工具