Project1

标题: 保护游戏地图数据与插件脚本防修改——PC端、手机端都能防 [打印本页]

作者: Fan723    时间: 2019-2-26 16:17
标题: 保护游戏地图数据与插件脚本防修改——PC端、手机端都能防
本插件通过加密地图数据 json 文件,达到就算调出 www 文件夹用 MV 打开工程
也看不到地图数据。当然为防止通过破解插件脚本仿写解密方法,本插件支持且
要求要加密脚本。这样子,只要写在地图事件里的数据基本就能得很好的防护了,
而且加密过的工程 PC 端可以无需打包成 EXE,更加方便游戏内容更新。

范例工程用 江湖梦网 的联网范例,里面有PC端与APK端,可以尝试解包。
下载链接:https://pan.baidu.com/s/17MPPHWZ924cPm9HKAfxJwA 密码:qusn

破解出 www 文件夹用 MV 打开只能看到基础数据库,看不到地图:

打开地图 json 文件都是密文,范例采用简单加密,后续会开发多种加密方式:

本插件需要在游戏开发完成后要发布之前安装,这是初版,用了简单加密,
目前插件还在优化,还有更高级的加密方式,需要者请关注 江湖梦网



作者: Mehmet    时间: 2019-2-26 21:33
本帖最后由 Mehmet 于 2019-2-26 21:54 编辑
地图事件内容

作者: guoxiaomi    时间: 2019-2-27 01:03
本帖最后由 guoxiaomi 于 2019-2-27 01:15 编辑

MV应该没有很好的加密方法,毕竟脚本全是明文。我能想到的方法是用https://www.oschina.net/p/crypto-js中的AES加密,然后把跟密钥相关的部分代码混淆。

总之麻烦一点就能让破解的人费力多一点……但是也不知道怎么绕过类似 $dataMap 这种变量(我没用过MV,不知道这个变量具体是什么)。

原则上只要程序能运行,打开调试,直接获取此变量就可以复原了吧?
作者: 神秘中国人    时间: 2019-2-27 09:51
会被人破解出来...........你不会是base64吧?  要做一些混淆的方法,虽然还是能被破解,起码不会瞬间破解呀。  而且base64 不是加密。。。只是变成另外一种形式。。。
作者: 神秘中国人    时间: 2019-2-27 14:58
https://rpg.blue/forum.php?mod=v ... p;extra=#pid2792020
作者: mtqinglong    时间: 2019-2-28 23:46
比起这些,我现在比较好奇的是怎么解放潜在能力
作者: fux2    时间: 2019-3-1 00:37
js加密就是个硬伤,唯一能有点强度的就是在浏览器那头加接口,用cpp和js互交一下,可以隐藏关键功能的实现
可惜平台就被限定了
作者: Fan723    时间: 2019-3-1 08:23
四楼的神秘君的方法挻不错,只是得会代码的人自己写,还有就是所有脚本放到一个文件里实在太大,
要混淆加密都得付费,没法做到通用。
我的方法目前做到 MV默认数据库跟地图的 json 文件与存档文件都能加密,这个加密用 Base64 解码
已经解不出来了,但是程序员还是能读取内存生成文件的。
我能想到另一层保护就是,加密解密写在插件,然后游戏中挑几个关键插件与这个插件关联,如果关
闭这个插件就得将其它几个关联插件都关闭才能运行,然后这几个插件一起混淆加密。这样一来,就
算是生成了数据库跟地图文件还要关闭这几个插件才能运行游戏,这时游戏就已经变样了。
作者: Fan723    时间: 2019-6-27 23:51
最近几个我加密的游戏,有的发布三个多月了,有的一个多月,数据库、地图、存档倒是没见被玩家破解,
但是有发现玩家用修改内存方式,或修改 rpg_objects.js 文件中的脚本来获得物品与增加HP、MP、游戏币
等,我是已研究出了防御 RPGMakerMVGame Hook patcher.exe 工具修改内存的作弊,与通过 gainItem()
方法获得物品的作弊方法,防止玩家修改 HP、MP 也有思路来防御,但是防御通过 gainItem() 方法获得物
品与通过 gainGold() 修改游戏币的实在工作量非常大,特别是在给有的游戏加密时上百个插件的话,要逐
一检查插件是否涉及这两个方法实在够呛。

不知道大家的游戏出去后都遇到了什么样的破解修改,想看一下游戏加密应该朝哪个方向发展才是大众所需。
作者: 无阻软件    时间: 2019-6-28 00:34
在我理解里面web的打包方式无论如何都不能做到很好加密
如果不能在MV基础引擎上面进行大改的话在我想象中无论如何加密你最终MV的index.html文件运行的时候都会解密进行载入才能正常游戏

这个时候再进行web动态读取调试被加密内容就被扒出来原内容了 这是游戏引擎本身的弊端
作者: Fan723    时间: 2019-6-28 11:05
无阻软件 发表于 2019-6-28 00:34
在我理解里面web的打包方式无论如何都不能做到很好加密
如果不能在MV基础引擎上面进行大改的话在我想象中 ...

话说得是很有道理的,不可否认 MV 引擎是有弊端的,我也相信所有的程序在程序员与黑客眼里都是可破解的。但是当你有这方面能力的时候你是否愿意花费这个时间和精力来破解一个 MV 做的游戏?
作者: endymx    时间: 2019-8-18 01:31
Fan723 发表于 2019-6-27 23:51
最近几个我加密的游戏,有的发布三个多月了,有的一个多月,数据库、地图、存档倒是没见被玩家破解,
但是 ...

修改js文件的话,在插件里面对js文件夹下面的所有文件进行一次MD5验算,然后加密存在一个位置,每次开启时进行一次验算就能解决这个问题吧
另外求教如何防范内存修改
作者: Fan723    时间: 2019-8-18 09:24
endymx 发表于 2019-8-18 01:31
修改js文件的话,在插件里面对js文件夹下面的所有文件进行一次MD5验算,然后加密存在一个位置,每次开启 ...

1.对所有JS都加密存在一个弊端,加解密过程毕竟是降低效率的,有些方法被频繁调用,加解密过程会导致掉帧,手机端表现出卡顿,所以没必要加密的部分还是维持开源比较好。
2.防内存修改方面我想到的还是验证方面,目前我这边的游戏是联网有服务器,做服务器验证比较有基础。
作者: endymx    时间: 2019-8-20 00:22
本帖最后由 endymx 于 2019-8-20 00:24 编辑
Fan723 发表于 2019-8-18 09:24
1.对所有JS都加密存在一个弊端,加解密过程毕竟是降低效率的,有些方法被频繁调用,加解密过程会导致掉帧 ...


不是加密所有js,而是在窗口创建时对js目录下所有文件进行一次MD5校验,只要有一个js的代码被改动过,md5出来的值就会不同,然后判断不同关掉窗口就好
加密是指对算好的MD5值加密一次对比,防止被修改
作者: Fan723    时间: 2019-9-6 11:54
最新全方位加密出炉了!防内存修改,防数据库与地图文件修改,防脚本修改,防存档修改,隐藏素材加密钥匙,简化加密操作,不加大数据与脚本解密负担,插件多时会在启动游戏时延迟一点,需改变游戏存档,仅限新游戏发布前使用,旧游戏接入需重新开始游戏。

还是原来的范例还在原来的网盘,敬请各种尝试:
https://pan.baidu.com/s/17MPPHWZ924cPm9HKAfxJwA 密码:qusn
作者: fux2    时间: 2019-9-6 13:50
新版感觉有点没表现出加密的功能,本身就是需要网络数据,加密的意义就不大了

首先没防控制台


为所欲为


由于没有实质性内容,所以也没破解价值了……
sojson.v5有点太容易被针对了,他只是没有公开的傻瓜解法,实际上强度没有那么高,而且已经有现成的参考文章了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1