dfirvault/VolMenu
GitHub: dfirvault/VolMenu
VolMenu 是一个基于 Windows 控制台菜单的 Volatility 3 封装工具,为内存取证分析提供引导式配置、扫描队列和进度追踪功能。
Stars: 1 | Forks: 0
# VolMenu
一个轻量级的、基于菜单的 [Volatility 3](https://github.com/volatilityfoundation/volatility3) Windows Python 封装工具。VolMenu 将引导您完成配置 `vol.exe`、选择内存镜像和输出文件夹、选择目标操作系统、选择插件以及将多个扫描排队以便连续运行的所有操作——所有这些都通过一个简单的控制台菜单完成。
## 功能
- **持久化配置** — 将 `vol.exe` 的路径和您的性能偏好设置存储在 `HKCU\Software\DFIRVault\VolMenu` 中,因此您只需设置一次。
- **引导式 `vol.exe` 设置** — 在首次运行时(或配置的路径不再有效时),会打开一个文件选择器供您定位 `vol.exe`。如果您在没有选择文件的情况下关闭选择器,VolMenu 会打开 [Volatility 3 GitHub 页面](https://github.com/volatilityfoundation/volatility3) 以便您下载/构建它。
- **自动检测符号表** — 根据您选择的目标操作系统,在 `vol.exe` 旁边查找 `symbols\windows`、`symbols\linux` 或 `symbols\mac` 文件夹,并自动通过 `-s` 将其传递给 Volatility。
- **性能配置菜单** — 切换并行处理、设置 worker 数量、启用详细输出以及控制符号缓存行为。
- **引导式扫描设置** — 选择内存镜像、选择输出文件夹、选取目标操作系统(Windows、Linux 或 Mac),并选择一个或多个插件(或运行适用于该操作系统的所有可用插件)。
- **扫描队列** — 在执行开始前配置多个扫描;VolMenu 会按顺序运行它们,并报告每个插件和每次扫描的进度。
- **进度反馈** — 实时状态更新(`RUNNING...`、`DONE [OK]` 等)以及插件计数器(`[N/total]`)和整体扫描计数器(`Scan X/Y`),让您随时了解当前状况。
- **独立的插件输出文件** — 每个插件的结果都会作为一个单独的 `.txt` 文件保存在您选择的输出目录中。
## 环境要求
- **Windows**(该工具在其他平台上会立即退出——它依赖于 Windows 注册表和原生文件对话框)
- **Python 3.9+** 以及 `tkinter`(已包含在标准的 Windows CPython 安装中)
- **Volatility 3**,包括以下任一形式:
- 独立的 `vol.exe` 构建版本(例如通过 PyInstaller 构建),或
- 通过等效的 `.exe` 包装器调用的 `vol.py`/`vol` 入口点
无需任何第三方 Python 包——VolMenu 仅使用标准库(`winreg`、`tkinter`、`subprocess`、`pathlib` 等)。
## 安装说明
1. 确保已安装或构建了 Volatility 3(`vol.exe`)。有关安装说明,请参阅 [Volatility 3 代码库](https://github.com/volatilityfoundation/volatility3)。
2. 从此代码库下载 `VolMenu.py`。
3. 使用 Python 运行它:
```
python VolMenu.py
```
## 首次运行
首次启动时,VolMenu 会检查注册表中是否保存了 `vol.exe` 路径。如果不存在(或保存的路径不再有效):
1. 系统会提示您按 **Enter** 键打开文件选择器。
2. 浏览并选择您的 `vol.exe` 文件。
3. 该路径将被保存到 `HKCU\Software\DFIRVault\VolMenu` 以便将来使用。
如果您**在没有选择文件的情况下关闭文件选择器**,VolMenu 会在您的默认浏览器中打开 Volatility 3 的 GitHub 页面并退出,以便您下载或构建它。
## 主菜单
```
==================================================
VolMenu - Volatility 3 Wrapper
==================================================
vol.exe: C:\Tools\volatility3\vol.exe
--------------------------------------------------
1. New scan
2. Configure performance settings
3. Change vol.exe location
0. Exit
==================================================
```
### 1. 新建扫描
启动引导式扫描工作流:
1. **选择内存镜像** — 打开一个文件选择器,过滤常见的内存镜像扩展名(`.raw`、`.mem`、`.dmp`、`.vmem`、`.bin`、`.img`、`.lime`),并带有“所有文件”选项。
2. **选择输出目录** — 打开一个文件夹选择器,用于选择插件结果的保存位置。
3. **选择目标操作系统** — 选择 Windows、Linux 或 Mac。这决定了使用哪个符号目录以及哪些插件可用。
4. **选择插件** — 打开一个交互式复选框风格的菜单:
- **上/下方向键**(或 `W`/`S`)移动高亮显示
- **空格键** 切换高亮显示的插件的开/关状态
- **A** 全选/取消全选所有插件
- **Enter** 确认您的选择(如果没有勾选任何内容,则仅运行高亮显示的插件)
- **"Run ALL plugins"** 行会运行所选操作系统的所有插件
- **Esc** 或 **C** 取消并返回主菜单
配置完扫描后,系统会询问您是否要**排队进行另一次扫描**。您可以根据需要重复此操作多次——每次扫描都会与其对应的镜像、输出文件夹、操作系统和插件选择一起添加到队列中。一旦您拒绝添加更多扫描,VolMenu 将按顺序运行队列中的所有扫描。
### 在任意步骤取消
“新建扫描”工作流的每一个步骤都可以取消并返回主菜单:
- **内存镜像 / 输出目录提示** — 输入 `c` 而不是按 Enter 键。
- **目标操作系统菜单** — 输入 `C`。
- **插件复选框菜单** — 按 `Esc` 或 `C`。
如果您在扫描已经排队时取消,系统会询问您是放弃队列还是运行已经配置好的扫描。
#### 符号目录检测
对于每次扫描,VolMenu 都会在 `vol.exe` 旁边查找与所选操作系统匹配的子目录:
```
\symbols\windows
\symbols\linux
\symbols\mac
```
如果找到,它会通过 `-s ` 传递给 Volatility。如果未找到,扫描将在没有它的情况下继续进行(Volatility 的默认符号解析仍然适用)。
#### 输出
每个插件都会生成一个以插件本身命名的独立输出文件,例如:
```
windows_pslist_PsList.txt
windows_netscan_NetScan.txt
```
该文件会保存到您为该扫描选择的输出目录中。
#### 进度输出
在扫描运行期间,VolMenu 会为每个插件和每次扫描打印实时进度。除了每个插件的状态行之外,VolMenu 还会将 `vol.exe` 作为后台进程启动,并每隔半秒轮询一次其输出文件。每当 Volatility 写入如下行时:
```
Progress: 45.32 Reading Symbol layer
```
VolMenu 就会将最新的百分比和状态消息打印到控制台,以便您准确了解当前插件的执行进度:
```
############################################################
# 扫描 1/2: memdump.raw [Windows]
# 使用 symbols directory: C:\Tools\volatility3\symbols\windows
# 要运行的 plugins: 3
############################################################
[1/3] (Scan 1/2) Running: windows.pslist.PsList
Command: C:\Tools\volatility3\vol.exe -f memdump.raw windows.pslist.PsList
Output -> C:\Output\windows_pslist_PsList.txt
Status: RUNNING... (this may take a while, please wait)
Progress: 0.00% - Scanning primary layer [plugin 1/3, scan 1/2]
Progress: 45.32% - Reading Symbol layer [plugin 1/3, scan 1/2]
Progress: 99.99% - Reading Symbol layer [plugin 1/3, scan 1/2]
Status: DONE [OK] (1/3 complete)
```
#### 输出文件清理
一旦插件完成运行,VolMenu 会自动清理其输出文件:
- 删除每一行以 `Progress` 开头的内容(这些只是临时的进度更新,会使保存的报告显得杂乱)。
- 将多个连续的空行合并为一个单行空白。
这可以保持保存的 `.txt` 报告整洁,并专注于实际的插件输出。
### 2. 配置性能设置
```
==================================================
Performance Configuration
==================================================
1. Parallelism (-p): OFF
2. Worker count: 8 (CPUs detected: 8)
3. Verbose output (-vvv): OFF
4. Smart layer caching: ON
0. Back to main menu
==================================================
```
- **并行处理** — 启用后,将 `-p ` 传递给 `vol.exe`,以启用 Volatility 3 的并行处理功能并使用配置的 worker 数量。
- **Worker 数量** — 启用并行处理时使用的 worker 数量。
- **详细输出** — 在每次插件运行时添加 `-vvv`,以便在输出文件中获得更详细的日志记录。
- **智能层缓存** — 禁用后,会添加 `--no-symbol-cache` 以跳过 Volatility 的符号缓存。
所有设置都会保存到注册表中,并应用于每次插件运行。
### 3. 更改 vol.exe 路径
重新打开文件选择器,以便您可以将 VolMenu 指向不同的 `vol.exe`(例如,在升级 Volatility 3 或移动您的工具目录之后)。
## 配置存储
所有设置都存储在以下位置:
```
HKCU\Software\DFIRVault\VolMenu
```
| 值 | 类型 | 说明 |
|---|---|---|
| `VolExePath` | `REG_SZ` | `vol.exe` 的完整路径 |
| `ParallelismEnabled` | `REG_DWORD` | 如果启用了并行处理则为 `1` |
| `WorkerCount` | `REG_DWORD` | 用于并行处理的 worker 数量 |
| `VerboseOutput` | `REG_DWORD` | 如果应添加 `-vvv` 则为 `1` |
| `SmartCacheEnabled` | `REG_DWORD` | 为 `0` 时会添加 `--no-symbol-cache` |
您可以放心地删除此注册表项,以将 VolMenu 重置为其初始状态。
## 支持的插件
VolMenu 内置了针对不同操作系统的精选常用 Volatility 3 插件列表,包括进程列表/树/扫描、网络连接、与恶意软件相关的工件(`malfind`)、注册表分析、文件扫描/转储、已加载的模块/驱动程序等。完整列表在每个操作系统的插件选择菜单中均可见,并且“Run ALL”会执行该列表中的所有插件。
## 免责声明
VolMenu 是一个为了提供便利而打造的封装工具,它不会修改、替换或捆绑 Volatility 3 本身。您有责任获取 Volatility 3 以及您使用的任何符号表,并遵守其许可协议。本工具旨在用于合法的数字取证、应急响应和教育用途。
## 许可证
在此指定您首选的许可证(例如 MIT)。
## 功能
- **持久化配置** — 将 `vol.exe` 的路径和您的性能偏好设置存储在 `HKCU\Software\DFIRVault\VolMenu` 中,因此您只需设置一次。
- **引导式 `vol.exe` 设置** — 在首次运行时(或配置的路径不再有效时),会打开一个文件选择器供您定位 `vol.exe`。如果您在没有选择文件的情况下关闭选择器,VolMenu 会打开 [Volatility 3 GitHub 页面](https://github.com/volatilityfoundation/volatility3) 以便您下载/构建它。
- **自动检测符号表** — 根据您选择的目标操作系统,在 `vol.exe` 旁边查找 `symbols\windows`、`symbols\linux` 或 `symbols\mac` 文件夹,并自动通过 `-s` 将其传递给 Volatility。
- **性能配置菜单** — 切换并行处理、设置 worker 数量、启用详细输出以及控制符号缓存行为。
- **引导式扫描设置** — 选择内存镜像、选择输出文件夹、选取目标操作系统(Windows、Linux 或 Mac),并选择一个或多个插件(或运行适用于该操作系统的所有可用插件)。
- **扫描队列** — 在执行开始前配置多个扫描;VolMenu 会按顺序运行它们,并报告每个插件和每次扫描的进度。
- **进度反馈** — 实时状态更新(`RUNNING...`、`DONE [OK]` 等)以及插件计数器(`[N/total]`)和整体扫描计数器(`Scan X/Y`),让您随时了解当前状况。
- **独立的插件输出文件** — 每个插件的结果都会作为一个单独的 `.txt` 文件保存在您选择的输出目录中。
## 环境要求
- **Windows**(该工具在其他平台上会立即退出——它依赖于 Windows 注册表和原生文件对话框)
- **Python 3.9+** 以及 `tkinter`(已包含在标准的 Windows CPython 安装中)
- **Volatility 3**,包括以下任一形式:
- 独立的 `vol.exe` 构建版本(例如通过 PyInstaller 构建),或
- 通过等效的 `.exe` 包装器调用的 `vol.py`/`vol` 入口点
无需任何第三方 Python 包——VolMenu 仅使用标准库(`winreg`、`tkinter`、`subprocess`、`pathlib` 等)。
## 安装说明
1. 确保已安装或构建了 Volatility 3(`vol.exe`)。有关安装说明,请参阅 [Volatility 3 代码库](https://github.com/volatilityfoundation/volatility3)。
2. 从此代码库下载 `VolMenu.py`。
3. 使用 Python 运行它:
```
python VolMenu.py
```
## 首次运行
首次启动时,VolMenu 会检查注册表中是否保存了 `vol.exe` 路径。如果不存在(或保存的路径不再有效):
1. 系统会提示您按 **Enter** 键打开文件选择器。
2. 浏览并选择您的 `vol.exe` 文件。
3. 该路径将被保存到 `HKCU\Software\DFIRVault\VolMenu` 以便将来使用。
如果您**在没有选择文件的情况下关闭文件选择器**,VolMenu 会在您的默认浏览器中打开 Volatility 3 的 GitHub 页面并退出,以便您下载或构建它。
## 主菜单
```
==================================================
VolMenu - Volatility 3 Wrapper
==================================================
vol.exe: C:\Tools\volatility3\vol.exe
--------------------------------------------------
1. New scan
2. Configure performance settings
3. Change vol.exe location
0. Exit
==================================================
```
### 1. 新建扫描
启动引导式扫描工作流:
1. **选择内存镜像** — 打开一个文件选择器,过滤常见的内存镜像扩展名(`.raw`、`.mem`、`.dmp`、`.vmem`、`.bin`、`.img`、`.lime`),并带有“所有文件”选项。
2. **选择输出目录** — 打开一个文件夹选择器,用于选择插件结果的保存位置。
3. **选择目标操作系统** — 选择 Windows、Linux 或 Mac。这决定了使用哪个符号目录以及哪些插件可用。
4. **选择插件** — 打开一个交互式复选框风格的菜单:
- **上/下方向键**(或 `W`/`S`)移动高亮显示
- **空格键** 切换高亮显示的插件的开/关状态
- **A** 全选/取消全选所有插件
- **Enter** 确认您的选择(如果没有勾选任何内容,则仅运行高亮显示的插件)
- **"Run ALL plugins"** 行会运行所选操作系统的所有插件
- **Esc** 或 **C** 取消并返回主菜单
配置完扫描后,系统会询问您是否要**排队进行另一次扫描**。您可以根据需要重复此操作多次——每次扫描都会与其对应的镜像、输出文件夹、操作系统和插件选择一起添加到队列中。一旦您拒绝添加更多扫描,VolMenu 将按顺序运行队列中的所有扫描。
### 在任意步骤取消
“新建扫描”工作流的每一个步骤都可以取消并返回主菜单:
- **内存镜像 / 输出目录提示** — 输入 `c` 而不是按 Enter 键。
- **目标操作系统菜单** — 输入 `C`。
- **插件复选框菜单** — 按 `Esc` 或 `C`。
如果您在扫描已经排队时取消,系统会询问您是放弃队列还是运行已经配置好的扫描。
#### 符号目录检测
对于每次扫描,VolMenu 都会在 `vol.exe` 旁边查找与所选操作系统匹配的子目录:
```
标签:SecList, 内存取证, 数字取证, 自动化脚本, 逆向工具