查看: 348|回复: 0

[转载发布] RMMV 游戏数据加密,JS混淆(只适合代码人,非一键)

[复制链接]
  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 93 天

    连续签到: 3 天

    [LV.6]常住居民II

    2044

    主题

    132

    回帖

    9554

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    -2
    卡币
    7366
    OK点
    16
    积分
    9554
    发表于 2024-3-4 11:08:22 | 显示全部楼层 |阅读模式
    使用默认工程的来做的示范。

    步骤一:闭包。   新建cmain.js 文件,写上(function (){ })()
             
      把注释的JS文件,按顺序把内容复制到cmain.js里面。


    然后代码中找到DataManager.loadDataFile   把window[name] 改成 eval(name)



    这样子,代码就会形成闭包。  在控制台是无法访问到对应的JSON数据。

    步骤二,加密解密JSON。
    加密:
    1.在我们的工程index.html. 在加载cmain.js之前添加
    [code]            window.Base64 = {                _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",                encode: function(e) {                    var t = "";                    var n, r, i, s, o, u, a;                    var f = 0;                    e = Base64._utf8_encode(e);                    while (f < e.length) {                        n = e.charCodeAt(f++);                        r = e.charCodeAt(f++);                        i = e.charCodeAt(f++);                        s = n >> 2;                        o = (n & 3) > 4;                        u = (r & 15) > 6;                        a = i & 63;                        if (isNaN(r)) {                            u = a = 64                        } else if (isNaN(i)) {                            a = 64                        }                        t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a)                    }                    return t                },                decode: function(e) {                    var t = "";                    var n, r, i;                    var s, o, u, a;                    var f = 0;                    e = e.replace(/[^A-Za-z0-9+/=]/g, "");                    while (f < e.length) {                        s = this._keyStr.indexOf(e.charAt(f++));                        o = this._keyStr.indexOf(e.charAt(f++));                        u = this._keyStr.indexOf(e.charAt(f++));                        a = this._keyStr.indexOf(e.charAt(f++));                        n = s > 4;                        r = (o & 15) > 2;                        i = (u & 3)  127 && r < 2048) {                            t += String.fromCharCode(r >> 6 | 192);                            t += String.fromCharCode(r & 63 | 128)                        } else {                            t += String.fromCharCode(r >> 12 | 224);                            t += String.fromCharCode(r >> 6 & 63 | 128);                            t += String.fromCharCode(r & 63 | 128)                        }                    }                    return t                },                _utf8_decode: function(e) {                    var t = "";                    var n = 0;                    var r = c1 = c2 = 0;                    while (n < e.length) {                        r = e.charCodeAt(n);                        if (r < 128) {                            t += String.fromCharCode(r);                            n++                        } else if (r > 191 && r < 224) {                            c2 = e.charCodeAt(n + 1);                            t += String.fromCharCode((r & 31)  4;            u = (r & 15) > 6;            a = i & 63;            if (isNaN(r)) {                u = a = 64            } else if (isNaN(i)) {                a = 64            }            t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a)        }        return t    },    decode: function(e) {        var t = "";        var n, r, i;        var s, o, u, a;        var f = 0;        e = e.replace(/[^A-Za-z0-9+/=]/g, "");        while (f < e.length) {            s = this._keyStr.indexOf(e.charAt(f++));            o = this._keyStr.indexOf(e.charAt(f++));            u = this._keyStr.indexOf(e.charAt(f++));            a = this._keyStr.indexOf(e.charAt(f++));            n = s > 4;            r = (o & 15) > 2;            i = (u & 3)  127 && r < 2048) {                t += String.fromCharCode(r >> 6 | 192);                t += String.fromCharCode(r & 63 | 128)            } else {                t += String.fromCharCode(r >> 12 | 224);                t += String.fromCharCode(r >> 6 & 63 | 128);                t += String.fromCharCode(r & 63 | 128)            }        }        return t    },    _utf8_decode: function(e) {        var t = "";        var n = 0;        var r = c1 = c2 = 0;        while (n < e.length) {            r = e.charCodeAt(n);            if (r < 128) {                t += String.fromCharCode(r);                n++            } else if (r > 191 && r < 224) {                c2 = e.charCodeAt(n + 1);                t += String.fromCharCode((r & 31)

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2024-11-6 19:51 , Processed in 0.051090 second(s), 38 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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