前言

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

这篇还是讲 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"]() 这样的代码,通过函数名,可以知道这就是作者给我们留的坑了,统统给它注释掉,再次通过浏览器打开游戏,发现一切正常了,之后的过程就和前面的文章一样了,按部就班的调试就能拿到资源加密方式和密钥了

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

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

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

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

  1. 记一次完整的RPG Maker MV游戏逆向过程(准备阶段)

    前言 博主很喜欢剧情类的游戏,仙剑,古剑系列都玩过了.但依然能从一些独立小游戏里找到一些剧情很不错的游戏.独立的RPG游戏很多都是由RPG MAKER MV制作的. 本文只是作者处于兴趣所进行的尝试, ...

  2. RPG Maker MV游戏解包

    该文章最新版本请前往:https://www.crowsong.xyz/127.html 前言 使用Petschko's RPG-Maker-MV File-Decrypter进行解包 使用Petsc ...

  3. 现代城市地图场景RPG Maker MV游戏素材

    一个大而明亮的现代化城市 您可以使用此素材创建一个干净,现代的主题城市.所有图块均为16x16像素 -与RPG Maker MV + RPG Maker VX Ace兼容的图块和Autotile -3 ...

  4. RPG Maker MV 游戏开发新选择

    rpg maker 这个东西很多做业余游戏的都知道,是一款可视化简单的rpg游戏开发工具,快速易上手,可以迅速完成简单的rpg游戏开发,这个东西我上大学时接触过,当时用的 是rpg maker xp, ...

  5. 【RPG Maker MV】RPG游戏《机器人养成记》制作笔记 - RPG Maker MV 界面介绍

    上一节,我们已经完成了软件的安装和项目的创建,并成功的运行了游戏. 这一节我们将介绍RGP Maker MV的界面元素和基本的使用方法,让大家对软件有个基本的了解. 我们先回到软件的主界面,界面分成工 ...

  6. 【RPG Maker MV】RPG游戏《机器人养成记》制作笔记 - 制作背景和引擎选择

    想让更多的人了解人工智能,学会机器学习,但机器学习本身有太高的入门门槛,导致很多人望而却步.因此一直在想办法让机器学习变得简单.有趣一些.做过一些尝试:比如用动画的形式介绍机器学习原理(点击查看),通 ...

  7. RPG Maker mv框架代码解析之窗口文字显示

    目录 窗口文字显示 字体的颜色 通常色 系统色 危机色 死亡色 计量器背景色 血量计量器色1 血量计量器色2 魔法计量器色1 魔法计量器色2 魔法消耗色 力量上升色 力量下降色 技能值计量器色1 技能 ...

  8. RPG Maker MV 打包安卓和修改分辨率的方法

    最近要处理RPGMV游戏的安卓打包过程,发现打包完了在手机上运行,两边总有黑边,后来发现是分辨率有问题,需要修改. 具体打包方法见B站视频: https://www.bilibili.com/vide ...

  9. RPG Maker mv框架代码解析之窗口图片显示

    文章目录 1 窗口基类的图片描画接口 1.1 Face描画接口 1.2 Icon描画接口 2 描画自定义图片 1 窗口基类的图片描画接口 RPG Maker mv框架中的窗口基类(Window_Bas ...

最新文章

  1. html点击保持,如何保持:点击元素后的活动CSS样式
  2. OS X 10.11 cocoapods
  3. 独家 | 识别并解决数据质量问题的数据科学家指南
  4. 《windows中GSX的管理》之四——cmware-cmd实例
  5. GDCM:gdcm::PhotometricInterpretation的测试程序
  6. 如何高效学习前端新知识,我推荐这些~
  7. javascript进制转换_「js基础」JavaScript逻辑和位运算符归纳
  8. 7、Fiddler的HTTP统计视图
  9. 各大媒体优劣对比_主流酱油选购对比
  10. 【TOGAF】DAY 1:如何通过 TOGAF 9 认证
  11. xp谷歌浏览器时间快了_Win7系统零日漏洞曝光,谷歌建议:升级Windows 10
  12. 数据告诉你,谁是2019年最硬核公链?
  13. ora**cle数据库过期问题
  14. JS 事件代理和事件委托
  15. 非常有用的10个谈话技巧
  16. i5 vs i7区别是什么,那个处理器适合您的电脑?
  17. 做Web自动化前,你必会的几个技能
  18. c#期末考试知识点_c#期末考试复习题
  19. 他说:“程序员是出轨率最高群体”,然后就被解约了...
  20. ZZULIOJ 1135: 算菜价,Java

热门文章

  1. java 买票_java 简单买票系统
  2. 债券交易日志12.24
  3. 安装webpack4.x
  4. Open Smart Card Shell Test on doemv.js - EMV DDA Test
  5. idea创建项目教程
  6. borda法matlab,卫生应急风险矩阵法与Borda序值法评估
  7. kali-dmitry
  8. 道听途说Struts2之3:Action
  9. 四位计算机领域先驱者
  10. 阿里云服务器收费价格表及配置选择