じ☆ve冰风 发表于 2024-3-4 11:08:22

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

使用默认工程的来做的示范。

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


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



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

步骤二,加密解密JSON。
加密:
1.在我们的工程index.html. 在加载cmain.js之前添加
            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)
页: [1]
查看完整版本: RMMV 游戏数据加密,JS混淆(只适合代码人,非一键)