简介:本资源是面向RPG Maker MV游戏开发者与MOD制作者的专用解密工具集,用于破解官方加密机制,获取图形、音频、脚本等原始资源以支持深度定制、内容修复或功能扩展。项目采用Web前端技术实现,共36个文件,涵盖13个JavaScript核心逻辑(如Decrypter.js、RPGFile.js)、5个CSS样式文件(含Bootstrap框架及自定义主题)、4个PNG图标资源、3个HTML主界面文件,以及字体、许可证、README文档等辅助组件,整体包体仅318KB,轻量易部署。已有1691人学习下载,说明其在独立游戏开发社区中具备较高实用认可度。用户可直接运行index.html启动图形化解密界面,通过readKeyFromGame.js自动提取游戏密钥,结合ZIP.js与LZ-string算法完成资源解包与解密;目录结构清晰分层(master主模块、A/YLL功能分支、T工具入口),附带完整LICENSE与使用说明,适合具备基础前端调试能力的中级开发者快速上手并二次开发。 最近在整理一批用到 RPG Maker MV 引擎的游戏素材时,碰到了一个很实际的问题:游戏通过官方导出的zip压缩包里的图片、音频、数据文件,居然全部带上了加密后缀,直接双击根本没法另存,连预览都做不到。网上翻了半天,发现不少人遇到同样的困惑,而RPG-Maker-MV-Decrypter这个开源项目正好可以解决。它本质上是一个针对 RPG Maker MV 加密资源文件(.rpgmvp、.rpgmvo、.rpgmvm)做解密的命令行工具,主要用于学习、备份、兼容性修复,或者给已经拥有版权的游戏制作补丁时使用。这篇文章我就以实际使用者的角度,把它的原理、操作方法、踩坑经验,以及“什么能解、什么不该解”的边界一次说清楚。
如果你手头正好有一款 RPG Maker MV 制作的游戏,并且你拥有合法副本、想提取原图做研究,或者想修复损坏的加密文件,这篇文章会给你一条完整的实操路径。我默认你有一点点命令行基础,但即使完全零基础,照着我给的步骤也能跑通。
1. 为什么你需要一个 RPG Maker MV 解密工具
1.1 官方加密机制与文件格式
RPG Maker MV 最早在 2015 年推出,它的资源打包方式很有特点:默认项目文件夹里会有一个www目录,里面包含js、img、audio、data等子目录。正常情况下面,图片会以.png、.jpg格式存在,音频是.ogg、.m4a,数据文件是.json。
但当你用编辑器自带的“部署”功能生成一个发布包的时候,可以在部署选项里勾选“加密存档”。一旦开启加密,整个www目录里的资源就会变成这样:
www/img/下的.png文件变成.rpgmvpwww/audio/下的.ogg、.m4a文件变成.rpgmvowww/data/下的.json文件变成.rpgmvm- 另外还会生成一个
www/System/EncryptionKey.js文件,里面保存了解密需要的密钥
这个机制从研发者的角度看,是想挡住普通玩家直接解包、偷素材。但从另一个角度看,它给合法的 mod 开发者、汉化组、资源备份爱好者造成了不小障碍:你明明有游戏本体,想改两个数值或者换一张立绘,却因为加密连文件都打不开。
1.2 解密工具的定位与使用边界
RPG-Maker-MV-Decrypter就是用来把.rpgmvp、.rpgmvo、.rpgmvm还原成原始资源文件的工具。它做两件事:去掉文件头的自定义签名,然后使用EncryptionKey.js里的密钥对剩余数据做 XOR 异或运算,最终输出带正确扩展名的文件。
使用前必须先想清楚边界。这个工具不是用来“破解正版”的,它只会帮你解密“已经能正常运行的、你拥有合法副本的 RPG Maker MV 游戏”。如果某个游戏你根本没有购买,或者它的资源是别人的原创素材,那解密后拿去二次传播、二次售卖,明显涉及侵权和盗版问题。我后面所有操作示范,都基于“你拥有这个游戏合法副本”这一前提。
2. 解密前的准备工作
2.1 确认游戏使用的 RPG Maker 版本
第一步不是急着下载工具,而是先确认这个游戏到底是不是 RPG Maker MV 做的,而不是后来的 RPG Maker MZ。因为 MZ 的加密策略和 MV 有些不同,如果用错工具,解密出来的文件大概率是坏的。
判断方法很简单:进入游戏安装目录,看看有没有www文件夹,或者看看游戏根目录下有没有package.json、index.html。再打开index.html,如果里面有rpg_core.js或者类似pixi.min.js的引用,基本可以确定是 MV 引擎。另外,加密文件的后缀.rpgmvp、.rpgmvo、.rpgmvm也是 MV 的典型特征,MZ 用的是.png_、.ogg_、.json_这样的命名方式。
2.2 获取工具与运行环境
RPG-Maker-MV-Decrypter是一个基于 Node.js 编写的命令行项目。所以你需要先安装 Node.js。建议安装 14 以上的 LTS 版本,版本太旧会跑不起来,版本太新可能会有依赖兼容问题。
安装好 Node.js 之后,从项目仓库把代码克隆到本地:
git clone https://github.com/example/RPG-Maker-MV-Decrypter.git cd RPG-Maker-MV-Decrypter npm install这里我用了example占位,实际地址以项目主页为准。npm install会把依赖装进node_modules,整个项目就算就绪了。
如果你实在不想用命令行,也可以找一些带有图形界面的变体工具。但我还是建议用命令行版本,因为可控性高,尤其是后面需要批量处理或者嵌入脚本时,命令行工具的优势非常明显。
3. 解密原理:签名、异或密钥与文件映射
3.1 文件签名与数据偏移
很多人以为 RPG Maker MV 的加密是类似 AES、RSA 这类现代加密算法,其实不是,它用的是非常简单、原始的 XOR 异或算法。正因为简单,所以解密工具写起来也不复杂。
加密后的.rpgmvp、.rpgmvo、.rpgmvm文件,在文件开头会有一个自定义的签名头。这个签名头用来标识“这是一个 RPG Maker MV 加密文件”,同时也告诉解密器“你要从这里开始跳过”。我见过的主流实现里,签名头的字节长度是固定的,不同版本可能略有差异,但整体思路一致。
比如有些版本会在文件头部写入 16 字节的标识符,类似:
52 50 47 4D 56 00 00 00 00 00 00 00 00 00 00 00前 4 个字节52 50 47 4D就是 ASCII 码下的RPGM。解密时,程序需要先读取这个签名头,确认文件类型,然后跳过这段数据,再从签名头之后的位置开始处理真正的密文。
3.2 XOR 解密算法拆解
XOR 运算的特点是:如果对同一个值做两次异或,就会得到原来的数据。加密的时候,引擎把原始文件的字节流,依次与密钥中的字节做异或;解密的时候,只要用同一个密钥再做一次异或,就能还原。
密钥来自www/System/EncryptionKey.js,内容通常是类似这样的代码:
var encryption_key = "0123456789abcdef0123456789abcdef";这里用一个 32 位的十六进制字符串做示例,实际密钥是引擎随机生成的。解密程序会读取这个字符串,转换成字节数组,然后用它循环对加密数据做异或。假设原始数据是明文plain,密钥是key,加密后是cipher,那么解密公式就是:
plain[i] = cipher[i] XOR key[i % key_length]也就是说,密钥会从头开始循环使用,每处理一个字节,密钥指针就移到下一位,到了末尾就回到开头。
3.3 关键代码片段与手动验证
工具内部的核心逻辑其实很短,大致可以用下面的伪代码表示:
const fs = require('fs'); const keyText = fs.readFileSync('EncryptionKey.js', 'utf8'); const key = extractKeyString(keyText); // 从 JS 中提取十六进制密钥字符串 function decryptFile(inputPath, outputPath) { const buf = fs.readFileSync(inputPath); const offset = detectSignature(buf); // 获取签名头长度 const data = buf.subarray(offset); const result = Buffer.from(data); for (let i = 0; i < result.length; i++) { result[i] ^= key[i % key.length]; } // 根据文件类型,决定输出扩展名 fs.writeFileSync(outputPath, result); }这个流程对单个文件来说,完全没有复杂度。但实际使用时,你还需要考虑文件类型映射,也就是如何把.rpgmvp还原成.png,把.rpgmvo还原成.ogg或.m4a。加密后的文件丢失了原始扩展名信息,必须靠原始目录结构和前端路径来推断。
举个例子,www/img/tilesets/worldmap.rpgmvp解密后应该放到www/img/tilesets/worldmap.png。所以要正确还原整个项目,不能只解单个文件,而要根据目录结构批量处理。
4. 实战:使用 Decrypter 解密资源文件
4.1 命令行参数说明与基本用法
这个工具的命令行参数有许多变体,但核心无非是三个:指定加密文件的输入目录、指定输出目录、指定密钥文件或密钥参数。我习惯的使用方式是这样:
node decrypter.js --input ./game/www --output ./game_decr/www --key ./game/www/System/EncryptionKey.js有些版本的命令是:
node decrypter.js -i ./game/www -o ./game_decr/www -k ./game/www/System/EncryptionKey.js具体以你克隆下来的项目 README 为准。运行后,工具会扫描输入目录下的所有.rpgmvp、.rpgmvo、.rpgmvm文件,然后逐一解密到输出目录。
如果不想指定密钥文件,也可以把密钥直接写在命令行参数里,但那样容易在 shell 历史里泄漏,不建议这么做。
4.2 处理单个文件与批量解压
经常有人问我,能不能只解压其中一张图片?可以,但要注意扩展名问题。比如我想单独解密img/faces/face1.rpgmvp,可以直接运行:
node decrypter.js --file ./game/www/img/faces/face1.rpgmvp --output ./decr/face1.png --key ./game/www/System/EncryptionKey.js但这里有个坑:如果--output参数只给到文件名,那么目录结构就丢失了。更稳妥的方式是保留原始相对路径,让工具自动判断扩展名。我实际用下来,推荐的做法还是整包解压,省时省力,还不会漏掉文件。
批量解压的大致流程如下:
- 确认
www目录结构完整,最好先复制一份出来,不要直接在原目录操作,以免误覆盖。 - 创建输出目录,比如
game_decrypted。 - 运行命令,让工具递归扫描所有加密文件。
- 查看输出目录里是否生成了对应扩展名的文件。
4.3 验证输出目录结构
解密完成后,不要急着马上用,先检查输出目录的顶层结构。正常的还原效果应该是:
game_decrypted/ └── www/ ├── data/ │ ├── Actors.json │ ├── Classes.json │ └── ... ├── img/ │ ├── faces/ │ ├── tilesets/ │ └── ... ├── audio/ │ ├── bgm/ │ └── se/ └── index.html如果发现某个目录里文件名全是乱七八糟的二进制,或者打开图片提示损坏,常见原因有两个:一是密钥不匹配,二是工具没有跳过正确的签名头长度。下面一节我会细说。
4.4 常见的坑:密码、大小写、路径空格
这几个问题我几乎每次给朋友远程指导时都会遇到。
第一,路径含空格。Windows 下很多游戏目录喜欢用My Game这种带空格的文件夹,如果你不把路径用双引号括起来,Node.js 会把它拆成多个参数。我在实际配置脚本时,统一会写成:
node decrypter.js -i "C:\My Games\Game\www" -o "D:\Decrypted\www" -k "C:\My Games\Game\www\System\EncryptionKey.js"第二,密钥文件读取问题。EncryptionKey.js虽然扩展名是.js,但它本身其实是一个纯文本文件,直接读取没有问题。不过要注意读取时的编码,推荐用utf8。如果你在 Windows 下用了其他编辑器打开并另存为带 BOM 的 UTF-8,可能会在密钥字符串开头多出几个不可见字符,导致解密结果的前几个字节是乱码。解决办法是用 VS Code 或 Notepad++ 把文件转成不带 BOM 的 UTF-8。
第三,文件名大小写。有些工具在判断扩展名时是区分大小写的,万一遇到.RPGMVP这种大写后缀,它会识别不出来。如果批量解压后发现有些文件没处理,优先检查原文件扩展名的大小写。
5. 解密后的资源利用与常见问题排查
5.1 解密后的文件如何重新打包
解密还原出原始资源后,你能做的事就多了。最常见的是做轻度汉化、修 bug、替换立绘。完成修改后,如果你希望游戏继续以加密状态运行,可以用 RPG Maker MV 自带的部署功能重新打包。注意,部署时如果勾选了加密,它会自动从www目录重新生成加密文件,不需要你手动加密。
如果你不想重新部署,也可以直接把解密后的www目录放到游戏目录里,然后删除原来的加密文件和EncryptionKey.js。但这样做后,游戏会明文读取资源,文件体积会更大,而且任何人都能直接扒走素材,所以只适合本地调试。
5.2 遇到“file is not a zip file”怎么办
很多人在解压 RPG Maker MV 的发布包时,会碰到zip文件本身损坏,或者根本不是zip格式,而是一个伪装成 zip 的加密包。从RPG-Maker-MV-Decrypter的角度看,它处理的是已经解开压缩、但内部资源被加密的情况。所以如果你收到一个xxx.zip,第一步应该是确认它是否能正常解压,而不是急着解密。
如果解压时报file is not a zip file,大概率是文件头有问题。可以先用十六进制查看工具打开这个 zip,看它以什么字节开头。正常 zip 文件开头是50 4B 03 04(也就是PK),如果开头不是,说明这个文件可能被二次加密过,或者下载时没下完整。这种情况需要先修复 zip 来源,或者用支持“忽略错误”的解压工具强制解压,但强制解压的后果是部分文件会损坏,到最后解密时反而更麻烦。
我个人的经验是:先校验文件大小,再解压,解压成功后再用解密工具,三步分开做。别把 zip 解压、资源解密混在一起,否则出了问题很难定位。
5.3 其他类似工具与跨版本兼容
除了RPG-Maker-MV-Decrypter,社区里还有一些针对 RPG Maker 系列的解密工具,比如处理 MZ 资源的小工具、处理加密存档的编辑器插件。这些工具的算法大同小异,但接口、密钥位置、扩展名规则完全不同,千万不要混用。
如果你拿着一个 RPG Maker MZ 的游戏,用 MV 的解密工具去解,大概率会失败,因为 MZ 的加密签名和密钥读取方式不一样。遇到这种情况,先确认引擎版本,再找对应工具。
跨版本兼容问题也发生在同一个 MV 引擎的不同版本上。RPG Maker MV 从 1.0 到 1.6.1,加密签名长度和密钥生成逻辑基本没变,但某些 1.0 旧版本生成的密钥文件路径有差异。我会建议你在拿到游戏后,先看一下www/System/EncryptionKey.js是否存在,不存在的话,说明这个版本可能还没启用加密,也就根本不需要解密。
6. 最后,请妥善使用这些文件
到这里,你已经知道如何使用RPG-Maker-MV-Decrypter把加密的.rpgmvp、.rpgmvo、.rpgmvm文件还原成正常的图片、音频和 JSON 数据。整个过程并不复杂,核心是理解签名头偏移和 XOR 密钥循环这两个概念。工具的价值不是让你去盗取别人的劳动成果,而是让你在合法的前提下,可以自由地研究、学习、修复和再创作。
我自己在实际使用中,最深的感受是:解密只是一扇门,打开之后你才能真正理解 RPG Maker MV 项目是如何组织的。比如data目录下的Actors.json里每个字段代表什么,img/tilesets里的图块排列规则是什么,这些内容只有亲眼看到原始文件才有直观认识。如果你也喜欢研究游戏制作,这个工具可以作为你进入引擎内部世界的入口。
最后再提醒一句,解密后的素材如果涉及角色立绘、音乐、美术资源,尽量只用于个人学习,不要打包塞进自己的游戏里,更不要拿去出售或做公开分享。尊重原创者,这个圈子才能持续产出好作品。
本文还有配套的精品资源,点击获取