设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

RMMV 游戏数据加密,JS混淆(只适合代码人,非一键)

查看数: 9699 | 评论数: 6 | 收藏 18
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-2-27 14:52

正文摘要:

本帖最后由 神秘中国人 于 2019-2-27 15:21 编辑 使用默认工程的来做的示范。 步骤一:闭包。   新建cmain.js 文件,写上(function (){ })()          还有一点就是 ...

回复

rfvtgbzxc 发表于 2022-7-15 16:40:44
各种插件里频繁使用,甚至可以算作滥用的eval让加密成了深坑。不动eval,懂点游戏数据结构的人分分钟找到注入代码的位置;动了eval,你要改不知道多少代码,给那些放飞自我随意获取数据的脚本料理后事。有很多eval明明可以限定范围,给定变量成为简单的表达式的。

点评

除此之外,闭包后的混淆会改变类名称,这让存档的反序列化变得更困难了,如果游戏代码更新,混淆的类名也跟着更新,就会导致存档的类名失效。  发表于 2022-7-15 22:36
另外楼主大大的方案也有同样的问题,eval在不加密前可以获取到闭包里的变量,加密后变量名改变就拿不到了,在尝试改掉所有eval的方案  发表于 2022-7-15 17:12
walf_man 发表于 2019-9-6 21:19:09
楼主非常厉害呀,这下mv做的游戏可以高枕无忧了
pajiman1999 发表于 2019-6-25 17:31:00
楼主打扰了~闭包这一步不太会
打开index.html写成这样对吗
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
        <meta name="viewport" content="user-scalable=no">
        <link rel="icon" href="icon/icon.png" type="image/png">
        <link rel="apple-touch-icon" href="icon/icon.png">
        <link rel="stylesheet" type="text/css" href="fonts/gamefont.css">
        <title>迷宫</title>
    </head>
    <body style="background-color: black">
        <script type="text/javascript" src="js/libs/pixi.js"></script>
        <script type="text/javascript" src="js/libs/pixi-tilemap.js"></script>
        <script type="text/javascript" src="js/libs/pixi-picture.js"></script>
        <script type="text/javascript" src="js/libs/fpsmeter.js"></script>
        <script type="text/javascript" src="js/libs/lz-string.js"></script>
        <script type="text/javascript" src="js/libs/iphone-inline-video.browser.js"></script>
<script type="text/javascript" src="js/cmain.js"></script>
<!--
<script type="text/javascript" src="js/rpg_core.js"></script>
        <script type="text/javascript" src="js/rpg_managers.js"></script>
        <script type="text/javascript" src="js/rpg_objects.js"></script>
        <script type="text/javascript" src="js/rpg_scenes.js"></script>
        <script type="text/javascript" src="js/rpg_sprites.js"></script>
        <script type="text/javascript" src="js/rpg_windows.js"></script>
        <script type="text/javascript" src="js/plugins.js"></script>
<script type="text/javascript" src="js/main.js"></script>
        //-->
    </body>
</html>

然后 新建
cmain.js

写入
(function (){

       <script type="text/javascript" src="js/rpg_managers.js"></script>
        <script type="text/javascript" src="js/rpg_objects.js"></script>
        <script type="text/javascript" src="js/rpg_scenes.js"></script>
        <script type="text/javascript" src="js/rpg_sprites.js"></script>
        <script type="text/javascript" src="js/rpg_windows.js"></script>
        <script type="text/javascript" src="js/plugins.js"></script>
<script type="text/javascript" src="js/main.js"></script>

})()

最后按照 步骤修改rpg_managers.js里的DataManager.loadDataFile  eval(name)替换
游戏进不去  小白一个 希望能帮忙指出错误
Mehmet 发表于 2019-2-27 19:38:58
本帖最后由 Mehmet 于 2019-2-27 19:46 编辑

这个方法比昨晚那个完善很多,在不知道怎么加密的情况下估计部分人会无从下手,不过用到控制台的帮助还是可以弄出来.
方法不错,改了秘钥之后就可以自己用来加密了.
不过好像插件会失效,也是需要弄进cmain里面吗?
>>>

点评

你这个cmain.js是例子吧。你可以用自己工程试试。 在控制台的帮助下?是啥意思....我不是熟RMMV,把对应的window 对象都闭包了,控制台无法访问  发表于 2019-2-28 10:01
guoxiaomi 发表于 2019-2-27 16:29:46
原来是把所有的文件都放到函数体里,了解了。

关于混淆有一个问题我不太确定:

混淆后函数名和变量名应该全部被替换掉了吧?所以基于原来的代码写的事件脚本是不是就无法使用了?
比如说这种:
$gameVariables.get(1)类似的……

点评

印象中事件脚本里的代码是json数据,在MV中以eval调用,如果变量名不正确应该会报错吧,我去测试一下  发表于 2019-2-28 14:34
不会,只要保证你的事件。 是存活在函数里面。  发表于 2019-2-28 11:18
if216 发表于 2019-2-27 15:15:06
本帖最后由 if216 于 2019-2-27 15:18 编辑

太好了,解锁新姿势。
其实混淆是很有用的,本来代码就难读,混淆后基本没人想去读代码,解混淆。反而脱壳的机器有一些。所以代码推荐混淆。当然,我没很好的混淆方案...

点评

混淆,不用自己写,网上找。 虽然本质上是加无用代码。但是自己写还是有点相当麻烦。如果确实不好混淆。 只能做加密,壳子在解密  发表于 2019-2-27 16:08
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 09:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表