如何解密RPG Maker的图形资源加密?
本帖最后由 ESQT 于 2022-8-23 17:20 编辑如何解密RPG Maker的图形资源加密?
相关文件
链接:https://pan.baidu.com/s/11r4ToGJWDo_EkSpFxc_QDQ
提取码:w22r
注意!!!:要正常启动样本,必须要要购买了这个游戏的steam
此游戏来自Steam,因为这个游戏虽然提供了内部的CG预览,但是清晰度很低,而且部分CG要难度的操作才能解锁查看,所有我打算解密这个游戏的CG(虽然也有一部分原因是我喜欢这个游戏)但是这个游戏的作者没有像其他作者一样出售游戏CG画集的打算也是一部分原因。
我本以为这个游戏对图形资源的加密会像其他RPG Make MV游戏一样采用制作器自带的加密,游戏制作器自带的加密已经出现了通用的提取器。但是这个游戏采用的加密非常特别,连游戏目录都和其他相同引擎的RPG Maker MV游戏不同(左图是要解密的游戏目录,右图是普通RPG Maker MV游戏目录)
大多数RPG Maker MV游戏的资源文件都是在游戏根目录的www文件夹里的,而这个游戏却去掉了www文件夹,直接把www文件夹的内容放到游戏根目录内,还少了几个文件夹,并且多出了一些文件,greenworks.js就是多出的文件之一,这个文件的作用应该就是必须要购买了这个游戏的steam运行这个游戏才能启动
接下来看游戏的资源目录(img文件夹),里面是一堆字母加数字的没有后缀的文件还有一个system文件夹,system文件夹里的是几张可直接预览的jpg。普通的RPG maker加密的文件一般都是rpgmvp的后缀,但是这个游戏的资源文件是没有后缀的。
接下来看游戏的插件目录(js文件夹),里面都是一些.js文件,还有一个很特别的.bin文件,通过观察插件目录(md5.js) ,游戏资源的名称可能都是用md5命名的。
这是普通RPG Maker MV的js文件目录,以下展示的.js文件是RPG Maker MV游戏必备js
现在看回这个游戏的index.html,RPGMaker MV制作的游戏都是靠index.html启动及运行游戏的
上一张是这个游戏的index.html,下一张是普通RPG Make MV游戏的index.html,通过对比,这个游戏的index.html文件的head部分多出了部分代码,body部分被替换了,body部分被完全用于加载插件(mrd.min.bin),没有看到用于加载其他插件的代码,所以其他的插件及有可能是被插件(mrd.min.bin)加载的
head部分不太清楚是干什么的,但是肯定和WebGL有关
如果把插件(mrd.min.bin)删除,或者把body被替换的部分删除,打开game.exe就会一片黑
打开game.exe就会一片黑的原因就是什么都没有加载 启动游戏时,会加载一会,这时CPU的利用率会提高,已经内存的占用率会多出200MB左右。这说明启动游戏时,游戏极有可能就是把游戏的资源载入内存。这样玩游戏时切换场景的速度就会变快,不会出现Loading。
以及,index.html中出现了WebGL,使用这些压缩纹理来节省图片内存占用,这也说明为什么游戏把资源载入内存时,占用的内存小于游戏的大小。
游戏启动后,在C盘发现了游戏的一个图片文件和一个md5文件C:\Users\用户名\AppData\Local\Nyakori'sRabbit Doll\User Data\Default\WebApplications\_crx_kcglhcegbdionpbancnfbnbjjgjnolbm 这个游戏的CG大概是用MD5来加密的,在plugins文件夹找到了个叫md5.js的文件
听说md5加密是无解的,如果是无解的游戏又是怎么显示被md5加密的cg文件呢?
普通的RPG Maker MV游戏是可以通过www目录下的index.html进行游戏,用加了--enablewebgl--ignore-gpu-blacklist--allow-file-access-from-files参数的浏览器打开www目录下的index.html也能进行游戏,这时打开开发者控制台就能看到游戏加载的资源。但是这个方法在这个游戏行不通,打开就是一片黑
出现两个错误,看起来是mrd.min.bin无法加载,
想不出说明解决方法
Access toXMLHttpRequest at 'file:///X:/Nyakori's%20Rabbit%20Doll/js/mrd.min.bin' fromorigin 'null' has been blocked by CORS policy: Cross origin requests are only supportedfor protocol schemes: http, data, chrome-extension, edge, https,chrome-untrusted.
Failed to load resource: net::ERR_FAILED
尝试修改index.html,无论怎么修改,连加一个空白行打开game.exe都会自动退出,并不是闪退,因为游戏退出的动画就是进程被关闭的样子,
这说明index.html文件有保护,无法修改。
尝试把除了js文件夹里除了mrd.min.bin,其他文件都删除。游戏仍然可正常启动及游玩。如果把普通RPG Maker MV游戏的plugins文件夹删除,就会提示ERROR Failed toload: xxx.js
如果删除js文件夹内的lib文件夹,打开game.exe就会一片黑
如果把js文件夹根目录下的任何.js问价删除,打开game.exe都会一片黑
但是Nyakori's rabbit doll的js文件夹内的除了mrd.min.bin文件删除后,仍然能正常启动及游玩
这说明Nyakori's rabbit doll的mrd.min.bin文件内已经包含了所有需要的js,所有把js文件夹下的任何js删除都可以正常启动及游玩
这一切都说明搞定mrd.min.bin文件是关键 尝试查看mrd.min.bin文件,用hexworkshop打开mrd.min.bin后的截图,能直接解读的是“DO_NOT_EXPORT_JSZIP"和DO_NOT_EXPORT_CODEPAGE
被警告不要提取JSZIP,由这个信息可知,这个文件大概就是一个JSZIP
百度到”jszip 是一个 JavaScript 库,可直接在浏览器上创建 zip 压缩档“
这样就知道这实际上是一种压缩包
以及50 49 58 49处的PIXI字样,这可能说明这个文件已经整合了游戏需要的插件
看到了一堆网址,我怀疑这个文件其实没有加密?
看了jszip的教程一对比,就发现了相似之处,是非常的相似
这已经可以确定index.html中的代码就是解压mrd.min.bin
然后执行mrd.min.bin中的代码,让mrd.min.bin中的代码解密被加密的图片资源再运行游戏
通过修改器在游戏内开启了控制台,获取了以下信息
发现img/后的英文数字组合对应着游戏根目录中的的mrd.min.bin文件就是关键
但是想不出办法解开这个文件
一款nw.js打包的steam游戏逆向
https://www.52pojie.cn/thread-1679769-1-1.html
(出处: 吾爱破解论坛)
抱歉,今天比较忙,刚抽空搞出来 本帖最后由 ESQT 于 2022-8-25 03:14 编辑
涛之雨 发表于 2022-8-24 21:39
一款nw.js打包的steam游戏逆向
https://www.52pojie.cn/thread-1679769-1-1.html
(出处: 吾爱破解论坛)
按你的步骤改了后游戏运行报错
mrd.js
99613行到99616行改成这样
wi.isNwjs = false; //防止破解必须手动修改,网页版为false本地版为true
wi.is_nwjc = false; //是否使用了nwjc且是steam发行版本
wi.mrd_debug = true; //启用调试模式,加载非加密的资源
99623行改为
if(false&&wi.isNwjs && !wi.mrd_debug)
复制99641行到99623行前
wi.onIndexCheckOK = true;
99678行改为
if(true||!wi.is_nwjc)
index.html
注释20到27行,注释35到36行
在37行后添加
<script type="text/javascript" src="js/mrd.js"></script> 首先没有样本只能帖上谈逆向了。。。
![](https://attach.52pojie.cn/forum/202208/23/163209wu8d7llebbseoez4.png)
这个图上的第26行是读取后进行解密并且运行,可以看一下evalNWBin里是什么代码,应该是解密后运行的。
---
![](https://attach.52pojie.cn/forum/202208/23/163232zavesmjamfs0q5wp.png)
这里报错是因为file不支持xhr读取,可以本地开一个http服务器试一下。。。
---
至于修改了文件就的打不开,应该是MD5校验,很常见的方法,很多软件啊游戏啊框架啊都是这样,此外常用的还有hash之类的 涛之雨 发表于 2022-8-23 17:05
首先没有样本只能帖上谈逆向了。。。
![](https://attach.52pojie.cn/forum/202208/23/163209wu8d7l ...
忘记上传样本了
这是样本
链接:https://pan.baidu.com/s/11r4ToGJWDo_EkSpFxc_QDQ
提取码:w22r
我先试试开服务器 本帖最后由 ESQT 于 2022-8-23 20:02 编辑
涛之雨 发表于 2022-8-23 17:05
首先没有样本只能帖上谈逆向了。。。
![](https://attach.52pojie.cn/forum/202208/23/163209wu8d7l ...
(index):26 Uncaught ReferenceError: nw is not defined
at xhr.onload ((index):26:5)
xhr.onload @ (index):26
load (async)
(anonymous) @ (index):23
用Windows自带的工具开启了网站服务,提示错误 本地运行我记得论坛里有帖子的
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1169825 纸偶 发表于 2022-8-23 23:13
本地运行我记得论坛里有帖子的
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1169825
这个帖子的内容在这个游戏几乎都用不上,这个游戏似乎是不读取js文件夹的js文件的,修改了js文件什么事情都没发生,连在浏览器运行都不行 绕过限制了,
本地运行实现了,
图片也都解密了。。。
问题是,好像没有啥高分辨率的图片啊。。。
不早了,明天起来再说一下过程吧。。。
还好偷袭成功了,啪就解密输出来了,很快啊,
作者大意了啊,没有闪 涛之雨 发表于 2022-8-24 00:17
绕过限制了,
本地运行实现了,
图片也都解密了。。。
非常期待过程,这游戏我搞了好久都完全没思路
这些图像文件应该都被作者压缩过,作者是打算把图片压得更小以占用更少的内存,似乎是用纹理压缩和WebGL搞定的,而且作者似乎是把图片让CPU加载进内存,然后让显卡处理。
非常好奇这个游戏作者是通过什么方法"加,解密,压缩图像和js资源,读入内存,防修改机制,必须要steam运行才能运行游戏,和禁止浏览器运行"的,这些办法在RPG Maker制作的游戏中非常少见 要是js文件夹里面的文件都被加密,文件名都给加密了,该怎么整呢 本帖最后由 ESQT 于 2022-8-24 16:50 编辑
yuxuan1311 发表于 2022-8-24 16:40
要是js文件夹里面的文件都被加密,文件名都给加密了,该怎么整呢
现在的情况和你说的情况差不多,游戏不读取js文件夹的js文件。无论怎么改都没有用
已经有大佬搞定了,等待大佬分享方法。这个方法应该也能解决你说的情况
页:
[1]
2