记一次完整的RPG Maker MV游戏逆向系列第四篇

前言

阅读本篇前请先看之前的几篇分析噢,不然可能会缺失一些前置知识

这篇还是讲 RPG Maker MV 的游戏分析,主要是如何分析一种通过 GameusQuestSystems.js 的加密手段

工具

  1. RPG Maker MV
  2. VS Code
  3. Edge 浏览器

正文

老套路,将游戏解压出来,用浏览器打开,注意到游戏一直处于加载状态,无法打开

记一次完整的RPG Maker MV游戏逆向系列第四篇

使用浏览器自带的开发人员工具,注意路径是非常奇怪的

记一次完整的RPG Maker MV游戏逆向系列第四篇

一个正常的网页打开开发人员工具,标题应当与域名是相同的,例如百度

记一次完整的RPG Maker MV游戏逆向系列第四篇

那我们猜测,这个游戏在代码中增加了一些条件,在浏览器打开的情况下会执行重定向,导致我们无法正常打开游戏,那么我们没有了调试工具的辅助,该如何找到是哪个文件进行了重定向呢?

因为 RPG Maker MV 的游戏特性,我们首先猜测是加载了某个插件来保护游戏的

打开游戏目录下的 plugin.js 通过如下方式关闭所有的插件,记得备份一份原版

记一次完整的RPG Maker MV游戏逆向系列第四篇

保存文件后再次打开游戏试试,发现可以打开了,不过游戏资源并不是真正的游戏资源

到这里,我们可以确认游戏确实是通过某个插件来进行保护的

记一次完整的RPG Maker MV游戏逆向系列第四篇

既然确认了确实是插件,那么我们通过看插件名或者二分测试法来定位究竟是哪个插件

所谓二分定位法即一次关闭一半的插件留下另一半,直到找到一个最终结果(其实就是二分搜索的思想)

查找过程略去不表,最终定位到是一个名叫 GameusQuestSystems.js 的文件进行了加密

ok,那我们就打开这个文件来康康,毫无意外,是一个混淆过的 js

记一次完整的RPG Maker MV游戏逆向系列第四篇

而且我们注意到图片中有非常奇怪的字符串,让我们怀疑是不是电脑坏了?其实不是的,这是很多的特殊字符造成的,处理这个也很简单

鼠标双击这个特殊字符后在键盘上使用 Ctrl + H 组合键,触发文本替换功能,将它替换掉就好啦

记一次完整的RPG Maker MV游戏逆向系列第四篇

文件中还有另一个这种类型的字符串,用同样的方法处理掉就好了

经过处理,我们依然看不懂这些混淆过的代码,接下来就是进行初步的反混淆了

粗略的看一下,文件中有非常多的地方在调用 _xmf('0x0','9txo') 这样的函数,根据经验,这个其实是对文本进行了加密,我们只要用这个函数把这些文本都处理一遍把结果替换回来,就可以了,至于到底怎么加密的我们并不关心(类似 hook 的思想,hook 在逆向中真的是非常重要的思想,包括正向开发也是,动态代理,AOP 其实和 hook 做的是一样的事)

ok,既然说替换,那么两种方式,其一正则表达式,其二 AST

正则表达式:在文本处理中非常常用的一种模式匹配语法

AST:中文全称 抽象语法树,百度百科解释的非常专业,说人话就是让计算机分析每段代码分别是干啥的,有个将代码转换成语法树的网址各位自己搜一下,放点代码进去试一试就能理解了,论坛似乎不能放外链,辛苦各位自己动动手了

好的,这里就不给出具体还原用的代码了,并不复杂,有心学习的同学自己按照这两种思路去搜一搜资料,搞定它

这里我们已经还原了字符串加密

记一次完整的RPG Maker MV游戏逆向系列第四篇

可以发现有形如 location["reload"]()window["close"]()["closeDevTools"]() 这样的代码,通过函数名,可以知道这就是作者给我们留的坑了,统统给它注释掉,再次通过浏览器打开游戏,发现一切正常了,之后的过程就和前面的文章一样了,按部就班的调试就能拿到资源加密方式和密钥了

逆向其实就是通过不断地猜测与尝试,很有可能很长时间都没有进展,适当的放松自己,做做别的事(比如逆向做烦了去搞搞开发?哈哈哈)也许某天就福至心灵了呢(很常见,无论是开发还是逆向)?

祝愿我们能保持初心,砥砺前行~~

本篇就酱啦,感谢各位阅读,撒花★,°:.☆( ̄▽ ̄)/$:.°★

上一篇:说说期货高频的一些分类


下一篇:如何在视频和图片中添加属于自己的水印