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

news/2024/11/8 5:38:09/

前言

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

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

工具

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

正文

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

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

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

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

正则表达式代码大概是下边这样,其中 111.js 是抠出来的 _xmf 函数,222.txt 是加密的文件,333.js 是解密结果

import execjs
import rewith open('./111.js') as f:jsCode = f.read()
with open('./222.txt') as f:encryptTxt = f.read()js = execjs.compile(jsCode)pattern = re.compile(r'_xmf\("(.*?)","(.*?)"\)')params = pattern.findall(encryptTxt)for param in params:decodeTxt = js.call('_xmf', param[0], param[1])print(decodeTxt)encryptTxt = encryptTxt.replace('_xmf("' + param[0] + '","' + param[1]+'")', '"' + decodeTxt+'"')with open('./333.txt', 'w') as f:f.write(encryptTxt)

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

在这里插入图片描述

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

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

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

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


http://www.ppmy.cn/news/934371.html

相关文章

实习第七天 nuxt.js

01.nuxt是vue的一个基本框架 原因竟是因为,在vue-cli的老版本中,是可以使用 vue init nuxt/starter 进行安装的 但在新版本的vue-cli中不行了!!! 使用官方推荐的npx来安装: (npm的5.2.x版本后默认安装了np…

解决Git fatal: refusing to merge unrelated histories报错

问题描述 当在远程建立了一个仓库,并且远程的仓库已经初始化了的情况,使用 git remote add origin gitgithub.com:xxx/xxx.git命令添加远程仓库后,执行git pull,然后提示如下: 大致意思就是需要关联我们的本地和远程分支。按照…

P图路上越来越强

1.怎么P液晶显示的里程数---get 教程移步:https://haokan.baidu.com/v?pdwisenatural&vid10908549577216357294 液晶字体下载:http://www.xiazaiziti.com/316634.html

谁说“修图”就一定等于“P图”?

谁说“修图”就一定等于“P图”? 人们通常认为修图是P图的同义词,但是Nvidia并不在此列。它拥有高级技术所需的硬件设备,并通过深度学习技术,使“修图”成为在图像部分缺失的情况下进行有效的填充而获得原图的效果。 虽然Photos…

腾讯知名软件全线下架,网友一片唏嘘

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇 来源:中国证券报、中国基金报、新浪微博 曾经的看片神器或要面临谢幕。 最近,#腾讯下架QQ影音所有版本#的消息冲上微博热搜! 记者…

p图你还在用ps么 程序员该怎么P图

PIL的使用 python第三方库pillow库的使用 pillow库的安装 使用命令行模式安装:pip install pillow 2.使用PyCharm: 依次点击file-----settings------Project:--------projectInterpreter 点击加号搜索pillow安装 from PIL import Image,…

为什么鹅厂腾讯天天招人,但又很难进,真的缺人吗?

大家有没有发现一个问题,腾讯这样的公司天天招人,每天都有内部人员找上门来内推,或者猎头主动推荐,好像非常缺人的样子,但是真的自己去面试了,却发现并不是那么容易。 其实,并不是非常缺人&…

皮一皮:P没P图?傻傻分不清...

往期推荐 皮一皮:这就是我的开发水平... 皮一皮:男生的求生欲,以及神回复... 皮一皮:顶尖黑客技术,10秒教学,不会你打我! 皮一皮:这才是「真 老司机」... 皮一皮:下班的…