QuickBMS(简称 QBMS)是一款由 Luigi Auriemma(网名 aluigi)开发的脚本驱动的跨平台文件提取与重新注入引擎。它通过简单的脚本指令(.bms 文件)来解析和提取各种软件和游戏文件格式中的资源。QuickBMS 被广泛应用于游戏模组开发、资源提取、游戏汉化、逆向工程和数字取证等领域。

基本信息
| 项目 | 内容 |
|---|---|
| 名称 | QuickBMS(QBMS) |
| 开发者 | Luigi Auriemma(aluigi) |
| 类型 | 脚本驱动文件提取与重新注入引擎 |
| 支持平台 | Windows、Linux、macOS(支持大小端架构) |
| 编程语言 | C |
| 许可协议 | GPL-2.0 开源许可证 |
| 官方网站 | http://quickbms.com |
| 官方论坛 | https://zenhax.com |
| 项目状态 | 活跃维护中 |
概述
QuickBMS 由意大利开发者 Luigi Auriemma 于 2009 年左右开始开发并持续维护至今。它的设计理念是让用户无需为每一种文件格式编写独立的专用工具,而是通过编写轻量的 BMS 脚本来定义提取规则,从而实现“一次编写,随处使用”。
QuickBMS 的脚本语言是 MexScript 的改进版本,完全兼容原有的 MexScript 语法。此外,QuickBMS 还支持大部分 Total Commander 的 WCX 插件。
核心功能
1. 多格式支持
QuickBMS 内置了超过 400 种不同的压缩和加密算法,涵盖:
| 类别 | 示例算法 |
|---|---|
| 经典 LZ 系列 | LZSS、LZ77、LZW 等 |
| 现代压缩标准 | LZ4、Zstandard 等 |
| 游戏专用压缩 | RNC、PRS、Yay0 等 |
| 加密算法 | AES、XXTEA 等 |
通过社区贡献的超过 2000 个 BMS 脚本,QuickBMS 已支持几乎所有主流游戏引擎和应用程序的资源格式。
2. 脚本驱动(BMS 脚本系统)
QuickBMS 的核心是其脚本驱动架构。用户通过编写 .bms 文本文件来描述目标文件的结构,QuickBMS 根据脚本指令执行解析和提取。
# 示例:简单的 BMS 脚本结构[reference:28][reference:29] get FILE_NAME string # 读取文件名 get FILE_SIZE long # 读取文件大小 get FILE_OFFSET long # 读取文件偏移量 log FILE_NAME FILE_OFFSET FILE_SIZE # 提取文件
脚本语言提供了 20 种数据类型和 40 条命令,支持变量、条件判断、循环、数学运算等编程结构。
3. 资源重新注入(Reimport)
QuickBMS 最突出的特色功能之一是支持将修改后的文件重新注入回原始存档中。它提供了两种重新注入模式:
| 模式 | 说明 |
|---|---|
| reimport | 仅适用于小于或等于原始文件大小的修改文件,存档文件总大小保持不变 |
| reimport2 | 允许将大于原始文件大小的文件追加到存档末尾,适合高质量纹理替换等场景 |
这一功能使得 MOD 制作、游戏本地化、资源替换等工作流程大大简化。
4. 文件列表与过滤
-
-l:列出存档中的文件而不实际提取 -
-f:使用通配符过滤特定类型的文件(如-f "*.mp3,*.txt")
5. 跨平台支持
QuickBMS 支持 Windows、Linux 和 macOS 三大操作系统,同时兼容小端(如 Intel)和大端(如 PPC)架构。
| 平台 | 使用方式 |
|---|---|
| Windows | 双击 quickbms.exe 启动图形界面,或通过命令行使用 |
| Linux / macOS | 从源代码编译安装:cd src && make && sudo make install |
使用方法
图形界面操作(三步完成)
-
双击运行
quickbms.exe -
选择一个
.bms脚本文件(与目标文件格式匹配) -
选择要提取的输入文件(游戏资源包)
-
选择输出目录(提取文件的保存位置)
-
观察解包进度直至完成
命令行操作
# 基本语法 quickbms [选项] <BMS脚本文件> <输入文件> <输出目录> # 实际示例 quickbms game_format.bms game_data.pak extracted_resources/ # 批量处理(使用通配符) quickbms script.bms *.dat ./output/
常用命令行参数
| 参数 | 功能 |
|---|---|
-l |
列出存档中的文件而不提取 |
-f "{}.mp3,{}.txt" |
只提取指定类型的文件 |
-o |
自动覆盖已存在的文件 |
-r |
启用重新注入模式(将修改后的文件写回存档) |
-w |
启用写入模式 |
-v |
详细模式,输出更多调试信息 |
-G |
强制使用图形界面模式 |
-q |
安静模式,减少日志输出 |
大文件支持
标准版本支持最大 4GB 的包文件和最大 2GB 的包内文件。对于超过 4GB 的大型文件,需使用 quickbms_4gb_files.exe 版本。
在 Galgame / 视觉小说中的应用
QuickBMS 在 Galgame 社区中被广泛用于:
-
提取游戏 CG、立绘、背景音乐和语音等素材
-
提取脚本文件用于游戏汉化翻译
-
MOD 制作:修改资源后通过重新注入功能替换原始文件
-
解包
.pak、.dat、.arc等常见的 Galgame 资源封包格式
典型工作流程
-
获取目标游戏对应的
.bms脚本(可从官方脚本库或社区获取) -
使用 QuickBMS 提取资源文件
-
修改提取出的图片、文本或音频
-
使用 reimport 模式将修改后的文件重新注入回原存档
脚本与社区生态
脚本获取
-
官方脚本库:Luigi Auriemma 本人编写并维护了从 2009 年至今的大量脚本
-
社区贡献:超过 2000 个由社区成员开发的 BMS 脚本
-
GitHub 脚本合集:如 DKDave/Scripts、RandomTBush/RTB-QuickBMS-Scripts 等
社区与支持
-
官方论坛:Zenhax(https://zenhax.com)——一个友好且活跃的文件格式逆向工程社区
-
Xentax 论坛:BMS 脚本语言的原始发源地
与其他工具的对比
| 对比维度 | QuickBMS | GARbro | Crass | ExtractData |
|---|---|---|---|---|
| 开发状态 | 活跃维护 | 活跃维护 | 已停止更新 | 已停止更新 |
| 操作方式 | 脚本驱动 + GUI/CLI | 原生 GUI | CUI 插件 + GUI | 拖拽即用 |
| 重新注入 | ✅ 支持(reimport/reimport2) | ✅ 支持 | ✅ 支持(Assage) | ❌ 不支持 |
| 跨平台 | Windows/Linux/macOS | Windows | Windows | Windows |
| 扩展方式 | BMS 脚本 | 模块化插件 | CUI 插件 | Susie 插件 |
| 格式支持 | 2000+ 脚本,400+ 算法 | 50+ 引擎,200+ 格式 | 数十款插件 | 特征签名扫描 |
QuickBMS 常与 GARbro、Crass 等工具搭配使用——当其他工具无法解包时,QuickBMS 凭借其脚本灵活性往往能作为有效的补充方案。
注意事项
-
版权合规:提取的资源建议仅用于个人学习、研究或非商业同人创作
-
文件大小限制:标准版不支持超过 4GB 的文件,需使用
quickbms_4gb_files.exe -
脚本匹配:必须使用与目标文件格式完全匹配的 BMS 脚本,否则提取可能失败
-
备份原始文件:进行重新注入操作前,请务必备份原始存档文件
-
GPL 合规:QuickBMS 采用 GPL-2.0 许可证,重新分发或修改源代码需遵守相应条款


评论0