游戏是一种神奇的程序,很多爱好者使用RpgMaker制作自己的游戏。虽然我对于游戏制作的经历不是从RpgMaker开始,但是是RpgMaker让我知道了一个RPG应有的组成元素;虽然我早已不用RpgMaker做任何东西,但是我还希望能为RpgMaker做点什么。

有些人用着盗版的Windows,网上下载的RpgMaker,商业游戏的素材,别处抄来的RGSS脚本,复刻的老游戏的剧情,最后发布的时候却加了密,的确是不厚道的做法。

本文将简单介绍RGSSAD文件的解密方法,以及更好的加密方案。

作者:leexuany(小宝)

郑重声明:
本文仅供学习交流使用,不得用于商业用途。强烈鄙视伸手党和剽窃他人作品的行为。如果你为剽窃他人的脚本、素材甚至整个游戏而来,本作者谢绝你使用本文提供的任何技术和解密程序。

零、你是否应该继续阅读?

如果你愿意遵守"郑重声明"中的要求,那么你可以继续。
如果你认为解密是一个禁忌的话题,那么你可以离开了。
如果你认为解密工具在严重侵害你的利益,那么你应该认真地阅读全文。
如果你想讨论,那么回帖是你最好的选择。
如果你想更好的保护你的游戏,那么就不要公开谈论你的方法。
如果你想开始阅读,那么就继续吧。

一、RGSSAD Extractor

RGSSAD Extractor的工作原理是让游戏自己解密RGSSAD文件,当游戏把资源读入内存之后,在通过脚本抓取内存。
因此RGSSAD Extractor 存在两个缺点:
1、它提取的并不是RGSSAD包内的原始素材。你可以在游戏里添加一张jpg格式的图片,如果不出意外RGSSAD Extractor 解出来的肯定是png格式的。虽然画面是一样的,但是对于我这样的素材完美主义者,这是决不允许的。
2、它的提取速度实在是太慢了,等待的时间足以使人疯掉。

因此我们需要知道RGSSAD的格式,然后写自己的解包工具。

二、RGSSAD资源格式

开始的8字节是文件标志,用于判断是不是RGSSAD文件。然后是n个
struct SubFile
{
    unsigned long filenamesize;
    filenamesize 字节的文件名;
    unsigned long filesize;
    filesize 字节的文件正文;
};
不过所有的SubFile结构都是xor加密过的。MagicKey的初值是0xDEADCAFE
MagicKey 的变换规则为 MagicKey = MagicKey * 7 + 3;
其中文件名是按字节异或,filenamesize filesize 以及文件正文都是按双字异或的。

如果你还有什么细节不清楚,可以直接查阅我上传的源代码。

http://download.csdn.net/source/585102

三、小宝的解包工具

对于不会编程的朋友,可以直接下载我编译好的版本。(使用者请严格遵守我前面的声明)

http://download.csdn.net/source/585095

四、防范措施与加密方案

  • 方案一:使用自己的加密/解密算法

第一种加密方案是修改RGSS102J.dll中的解密算法,然后自己把素材打包成RGSSAD格式。

此方案要求使用者对程序设计以及二进制文件的修改有一定的基础。

由于小宝现在还没有试过外挂dll这种技术,所以这里介绍一个相对简单的方法——修改MagicKey的初始值。在前面一节中,我们知道RMXP是使用0xDEADCAFE作为MagicKey的初始值,那么我们把RGSS102J.dll中的DEADCAFE修改掉,然后自己打包就可以防范那些一般的解包工具(比如我提供的那个,还有RGSSAD Extractor)。

当然,如果你觉得有必要的话,还可以给这个修改过的dll文件加一个强壳,然后随游戏发布。

  • 方案二:混淆文件名

第二种加密思路是混淆文件名。在Windows操作系统下,有 //:*?"<>| 这9个字符是不能用作文件名的。除去//表示文件目录,我们还有7个特殊字符可用。如果在原有文件名中加入这几个本来不能用的字符,那么解包程序就会因为不能正常创建文件而提取失败。

注:此方法需要自己打包资源文件,以及修改rxdata文件,工作量比较大。

混淆不能绝对保证自己的游戏不被盗用,它的主要目的是打击盗用者的信心,让他在还没有导出全部素材的时候就已经垂头丧气,精疲力尽了。

当然对于游戏而言,无论什么样的加密方案都只是增加破解者的工作强度,而不能真正保护自己的素材不被提取,因为素材终归是要在游戏中使用的。

RGSSAD加密与解密相关推荐

  1. RGSSAD加密方案分析

    上次简单介绍了RGSSAD加密解密的方法,这一次我们着重分析几种加密RMXP的方案,大家可以根据需要选择适合自己的. 方案一 修改MagicKey 这个方法上次已经提到,虽然安全系数不高,但足以应对全 ...

  2. 不错的威盾PHP加密专家解密算法

    <?php /*********************************** *威盾PHP加密专家解密算法 http://www.my400800.cn **************** ...

  3. 数字证书采用公钥体制进行加密和解密。每个用户有一个私钥,用它进行 (46)。。。

    数字证书采用公钥体制进行加密和解密.每个用户有一个私钥,用它进行 (46) : 同时每个用户还有一个公钥,用于 (47) . X.509标准规定,数字证书由 (48) 发放,将其放入公共目录中,以供用 ...

  4. 如何在 Linux 上用密码加密和解密文件

    age 是一个简单的.易于使用的工具,允许你用一个密码来加密和解密文件.age 能帮你这样做.它是一个小型且易于使用的工具,允许你用一个密码加密一个文件,并根据需要解密. age 是一个简单的.易于使 ...

  5. tkinter实现文件加密和解密

    源代码:https://gitee.com/mydreamambitious/file-encryption-and-decryption 注:这个代码和界面是做好的,但是还在进行优化和美化中.但是在 ...

  6. python 加密和解密

    python 加密和解密 安装 linux pip3 install pycryptodome windows pip install pycryptodomex 创建密钥 from Cryptodo ...

  7. 探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!

    前言 对于数据加密和解密每次我都是从网上拷贝一份,无需有太多了解,由于在.net core中对加密和解密目前全部是统一了接口,只是做具体的实现,由于遇到过问题,所以将打算基本了解下其原理,知其然足矣, ...

  8. phpc.sinaapp.com 加密的解密方法

    原文:phpc.sinaapp.com 加密的解密方法 很简单,用类似phpjm的解密方式,替换掉_inc.php中最后一个return中的eval为print就出来了.

  9. 加密与解密以及openssl的应用

    废话不多说,直入主题. 本文主要简单介绍下: 一.数据加密的三种方式: 二.Openssl的基础应用以及创建CA证书与发证: 一.数据加密的三种方式: 1.对称加密:加密与解密方使用同一个算法, 将数 ...

最新文章

  1. Java豆瓣电影爬虫——减少与数据库交互实现批量插入
  2. Google Pixel 3 XL 将可运行 Fuchsia 系统
  3. 详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3)
  4. 【Python】青少年蓝桥杯_每日一题_4.09_输出1~N之间的所有数
  5. 1.22 Lambda表达式的3种简写方式
  6. A good book to learn C#2.0 ----C# 2.0 : Practical Guide for Programmers
  7. 较Win7企业更愿用Win10?原因就在这里
  8. 高校表白app使用体验
  9. 高中上计算机专业用买电脑吗,大一新生有必要买电脑吗
  10. python 线性拟合 图_python线性拟合
  11. 学习c++ 必知三大特性
  12. java工具类(六)根据经纬度计算距离
  13. VS Code下载安装教程
  14. 传奇源码分析-服务器端(SelGate服务器分析)
  15. 为什么边缘概率密度是联合概率密度的积分_解读奥运积分排名:石宇奇为何第13 林丹谌龙未入前16...
  16. MSP430新建工程点灯
  17. java左手画圆右手画方_左手画圆右手画方可以同时进行吗?
  18. Mac电脑chrome打不开脸书,但是saf可以,请教是因为什么
  19. macos支持exfat吗_微软说,对Linux开放exFAT存储了!跨系统存储的福音
  20. JAVA如何对字符串去重

热门文章

  1. [破解] 爱盘 -- 在线破解工具包
  2. 【PHP代码注入】PHP代码注入漏洞
  3. linuxQt程序打包
  4. IDEA tomcat热部署
  5. 阿里NLP架构与应用
  6. 量子力学=粒子理论?量子波函数或许没有想象中那么神秘
  7. 嵌入式Linux驱动:LRADC按键
  8. C代码实现从FTP上下载文件
  9. [QT操作XML]QT读写XML文件,QT修改XML文件
  10. Docker 快速学习手册及相关笔记 附带一些问题解决方案