吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5090|回复: 14
上一主题 下一主题
收起左侧

[已解决] 如何解密RPG Maker的图形资源加密?

[复制链接]
跳转到指定楼层
楼主
ESQT 发表于 2022-8-23 16:49 回帖奖励
本帖最后由 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文件就是关键

但是想不出办法解开这个文件

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
涛之雨 发表于 2022-8-24 21:39
一款nw.js打包的steam游戏逆向
https://www.52pojie.cn/thread-1679769-1-1.html
(出处: 吾爱破解论坛)

抱歉,今天比较忙,刚抽空搞出来
推荐
 楼主| ESQT 发表于 2022-8-25 02:39 |楼主
本帖最后由 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行改成这样
[HTML] 纯文本查看 复制代码
wi.isNwjs = false;                                        //防止破解必须手动修改,网页版为false本地版为true
wi.is_nwjc = false;                                        //是否使用了nwjc且是steam发行版本
wi.mrd_debug = true;        //启用调试模式,加载非加密的资源


99623行改为
[HTML] 纯文本查看 复制代码
if(false&&wi.isNwjs && !wi.mrd_debug)


复制99641行到99623行前
[HTML] 纯文本查看 复制代码
wi.onIndexCheckOK = true;


99678行改为
[HTML] 纯文本查看 复制代码
if(true||!wi.is_nwjc)



index.html
注释20到27行,注释35到36行

在37行后添加
[HTML] 纯文本查看 复制代码
<script type="text/javascript" src="js/mrd.js"></script>

a.png (82.03 KB, 下载次数: 0)

a.png

b.png (106.05 KB, 下载次数: 0)

b.png

c.png (88.46 KB, 下载次数: 0)

c.png

d.png (123.57 KB, 下载次数: 0)

d.png

e.png (296.27 KB, 下载次数: 0)

e.png

点评

要在原来的客户端里打开  详情 回复 发表于 2022-8-25 07:22
沙发
涛之雨 发表于 2022-8-23 17:05

首先没有样本只能帖上谈逆向了。。。

这个图上的第26行是读取后进行解密并且运行,可以看一下evalNWBin里是什么代码,应该是解密后运行的。


这里报错是因为file不支持xhr读取,可以本地开一个http服务器试一下。。。


至于修改了文件就的打不开,应该是MD5校验,很常见的方法,很多软件啊游戏啊框架啊都是这样,此外常用的还有hash之类的

3#
 楼主| ESQT 发表于 2022-8-23 17:09 |楼主
涛之雨 发表于 2022-8-23 17:05
[md]首先没有样本只能帖上谈逆向了。。。

![](https://attach.52pojie.cn/forum/202208/23/163209wu8d7l ...

忘记上传样本了

这是样本
链接:https://pan.baidu.com/s/11r4ToGJWDo_EkSpFxc_QDQ
提取码:w22r

我先试试开服务器
4#
 楼主| ESQT 发表于 2022-8-23 20:00 |楼主
本帖最后由 ESQT 于 2022-8-23 20:02 编辑
涛之雨 发表于 2022-8-23 17:05
[md]首先没有样本只能帖上谈逆向了。。。

![](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自带的工具开启了网站服务,提示错误
5#
纸偶 发表于 2022-8-23 23:13
本地运行我记得论坛里有帖子的
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1169825
6#
 楼主| ESQT 发表于 2022-8-24 00:15 |楼主
纸偶 发表于 2022-8-23 23:13
本地运行我记得论坛里有帖子的
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1169825

这个帖子的内容在这个游戏几乎都用不上,这个游戏似乎是不读取js文件夹的js文件的,修改了js文件什么事情都没发生,连在浏览器运行都不行
7#
涛之雨 发表于 2022-8-24 00:17
绕过限制了,
本地运行实现了,
图片也都解密了。。。
问题是,好像没有啥高分辨率的图片啊。。。


不早了,明天起来再说一下过程吧。。。

还好偷袭成功了,啪就解密输出来了,很快啊,

作者大意了啊,没有闪
8#
 楼主| ESQT 发表于 2022-8-24 00:40 |楼主
涛之雨 发表于 2022-8-24 00:17
绕过限制了,
本地运行实现了,
图片也都解密了。。。

非常期待过程,这游戏我搞了好久都完全没思路

这些图像文件应该都被作者压缩过,作者是打算把图片压得更小以占用更少的内存,似乎是用纹理压缩和WebGL搞定的,而且作者似乎是把图片让CPU加载进内存,然后让显卡处理。

非常好奇这个游戏作者是通过什么方法"加,解密,压缩图像和js资源,读入内存,防修改机制,必须要steam运行才能运行游戏,和禁止浏览器运行"的,这些办法在RPG Maker制作的游戏中非常少见
9#
yuxuan1311 发表于 2022-8-24 16:40
要是js文件夹里面的文件都被加密,文件名都给加密了,该怎么整呢
10#
 楼主| ESQT 发表于 2022-8-24 16:46 |楼主
本帖最后由 ESQT 于 2022-8-24 16:50 编辑
yuxuan1311 发表于 2022-8-24 16:40
要是js文件夹里面的文件都被加密,文件名都给加密了,该怎么整呢

现在的情况和你说的情况差不多,游戏不读取js文件夹的js文件。无论怎么改都没有用

已经有大佬搞定了,等待大佬分享方法。这个方法应该也能解决你说的情况
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-23 10:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表