js逆向自动扣代码脚本

文章目录

  • 前言
  • 一、脚本的作用
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言

在逆向的过程中函数调用层层嵌套,需要我们不断的鼠标蹭蹭蹭,是否有办法减少一些无聊的力气活让我们专注于加密逻辑呢?


一、脚本的主要作用

以下面一段解混淆后的代码为例:

这段代码的需要解出sign的加密,不使用脚本则需要一个函数一个函数的扣取。

现在我们使用脚本则只需要找到生成sign值的入口函数即可,剩下的扣代码环节则交给脚本执行。

这里可以很明显的看出sign值是由____ej(w())生成的,而w()则是个定值“1744608664”,所以我们的入口函数就是____ej("1744608664"),接下来只需要把入口函数写入想要加载到的文件,运行脚本即可


(function () {
    var ____bb = function () {
        var ____be = !![];
        return function (____zn, ____zo) {
            var ____bh = ____be ? function () {
                if (____zo) {
                    var ____br = ____zo["apply"](____zn, arguments);
                    ____zo = null;
                    return ____br;
                }
            } : function () {
            };
            ____be = ![];
            return ____bh;
        };
    }();
    window["z"] = function _0x5a0e17(___bjv, ___bjw) {
        return ____ej(w());
    };
    window["w"] = function _0x4059ae(___bjx, ___bjy) {
        try {
            div = document["createElement"];
            return "1744608664";
        } catch (_0x3f0257) {
            return "1581503057419";
        }
    };

    function ____bs(____es, ____et) {
        var ____bt = (65535 & ____es) + (65535 & ____et);
        return (____es >> 16) + (____et >> 16) + (____bt >> 16) << 16 | 65535 & ____bt;
    }

    function ____bu(____eu, ____ev) {
    }

    function ____ch(____fs, ____ft, ____fu, ____fv, ____fw, ____fx, ____fy) {
        try {
            nav = navigator["language"];
            nav = navigator["languages"];
            nav = navigator["onLine"];
            nav = navigator["platform"];
            nav = navigator["product"];
            nav = navigator["productSub"];
            return ____bs(____bs(____bs(____fs, ____ft ^ ____fu ^ ____fv), ____bs(____fw, ____fy)) << ____fx | ____bs(____bs(____fs, ____ft ^ ____fu ^ ____fv), ____bs(____fw, ____fy)) >>> 32 - ____fx, ____ft);
        } catch (_0x1c530b) {
            return ____bs(____bs(____bs(____ej, ____fy ^ z ^ ____bu), ____bs(____fw, ____eh)) << ____ft | ____bs(____bs(____ej, ____fy ^ z ^ ____bu), ____bs(____fw, ____eh)) >>> 32 - ____ft, ____de);
        }
    }

    function ____co(____gg, ____gh) {
        try {
            check_screen = screen["availHeight"];
            return "gn = window.z(window.w())";
        } catch (_0x5d4606) {
            return "gn = window.m(window.k())";
        }
    }

    function ____cs(____gi, ____gj) {
        ____gi[____gj >> 5] |= 128 << ____gj % 32;
        ____gi[14 + (____gj + 64 >>> 9 << 4)] = ____gj;
        var ____ct;
        var ____cu;
        var ____cv;
        var ____cw;
        var ____cx;
        var ____cy = 1732584193;
        var ____cz = -271733879;
        var ____da = -1732584194;
        var ____db = 271733878;
        for (____ct = 0; ____ct < ____gi["length"]; ____ct += 16) {
            ____cu = ____cy;
            ____cv = ____cz;
            ____cw = ____da;
            ____cx = ____db;
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct], -680876936)) << 7 | ____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct], -680876936)) >>> 32 - 7, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 1], -389564586)) << 12 | ____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 1], -389564586)) >>> 32 - 12, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 2], 606105819)) << 17 | ____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 2], 606105819)) >>> 32 - 17, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 3], -1044525330)) << 22 | ____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 3], -1044525330)) >>> 32 - 22, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 4], -176418897)) << 7 | ____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 4], -176418897)) >>> 32 - 7, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 5], 1200080426)) << 12 | ____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 5], 1200080426)) >>> 32 - 12, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 6], -1473231341)) << 17 | ____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 6], -1473231341)) >>> 32 - 17, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 7], -45705983)) << 22 | ____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 7], -45705983)) >>> 32 - 22, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 8], 1770035416)) << 7 | ____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 8], 1770035416)) >>> 32 - 7, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 9], -1958414417)) << 12 | ____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 9], -1958414417)) >>> 32 - 12, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 10], -42063)) << 17 | ____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 10], -42063)) >>> 32 - 17, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 11], -1990404162)) << 22 | ____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 11], -1990404162)) >>> 32 - 22, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 12], 1804603682)) << 7 | ____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 12], 1804603682)) >>> 32 - 7, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 13], -40341101)) << 12 | ____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 13], -40341101)) >>> 32 - 12, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 14], -4213658665150173000)) << 17 | ____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 14], -4213658665150173000)) >>> 32 - 17, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 15], 1236535329)) << 22 | ____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 15], 1236535329)) >>> 32 - 22, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 1], -165796510)) << 5 | ____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 1], -165796510)) >>> 32 - 5, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 6], -1069501632)) << 9 | ____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 6], -1069501632)) >>> 32 - 9, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 11], 643717713)) << 14 | ____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 11], 643717713)) >>> 32 - 14, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct], -373897302)) << 20 | ____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct], -373897302)) >>> 32 - 20, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 5], -701558691)) << 5 | ____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 5], -701558691)) >>> 32 - 5, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 10], 38016083)) << 9 | ____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 10], 38016083)) >>> 32 - 9, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 15], -660478335)) << 14 | ____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 15], -660478335)) >>> 32 - 14, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 4], -405537848)) << 20 | ____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 4], -405537848)) >>> 32 - 20, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 9], 568446438)) << 5 | ____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 9], 568446438)) >>> 32 - 5, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 14], -1019803690)) << 9 | ____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 14], -1019803690)) >>> 32 - 9, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 3], -187363961)) << 14 | ____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 3], -187363961)) >>> 32 - 14, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 8], 1163531501)) << 20 | ____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 8], 1163531501)) >>> 32 - 20, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 13], -1444681467)) << 5 | ____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 13], -1444681467)) >>> 32 - 5, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 2], -51403784)) << 9 | ____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 2], -51403784)) >>> 32 - 9, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 7], 1735328473)) << 14 | ____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 7], 1735328473)) >>> 32 - 14, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 12], -1926607734)) << 20 | ____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 12], -1926607734)) >>> 32 - 20, ____da);
            ____cy = ____ch(____cy, ____cz, ____da, ____db, ____gi[____ct + 5], 4, -378558);
            ____db = ____ch(____db, ____cy, ____cz, ____da, ____gi[____ct + 8], 11, -2022574463);
            ____da = ____ch(____da, ____db, ____cy, ____cz, ____gi[____ct + 11], 16, 1839030562);
            ____cz = ____ch(____cz, ____da, ____db, ____cy, ____gi[____ct + 14], 23, -35309556);
            ____cy = ____ch(____cy, ____cz, ____da, ____db, ____gi[____ct + 1], 4, -1530992060);
            ____db = ____ch(____db, ____cy, ____cz, ____da, ____gi[____ct + 4], 11, 1272893353);
            ____da = ____ch(____da, ____db, ____cy, ____cz, ____gi[____ct + 7], 16, -155497632);
            ____cz = ____ch(____cz, ____da, ____db, ____cy, ____gi[____ct + 10], 23, -1094730640);
            ____cy = ____ch(____cy, ____cz, ____da, ____db, ____gi[____ct + 13], 4, 681279174);
            ____db = ____ch(____db, ____cy, ____cz, ____da, ____gi[____ct], 11, -358537222);
            ____da = ____ch(____da, ____db, ____cy, ____cz, ____gi[____ct + 3], 16, -722521979);
            ____cz = ____ch(____cz, ____da, ____db, ____cy, ____gi[____ct + 6], 23, 76029189);
            ____cy = ____ch(____cy, ____cz, ____da, ____db, ____gi[____ct + 9], 4, -640364487);
            ____db = ____ch(____db, ____cy, ____cz, ____da, ____gi[____ct + 12], 11, -421815835);
            ____da = ____ch(____da, ____db, ____cy, ____cz, ____gi[____ct + 15], 16, 530742520);
            ____cz = ____ch(____cz, ____da, ____db, ____cy, ____gi[____ct + 2], 23, -995338651);
            ____cy = ____bs(____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct], -198630844)) << 6 | ____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct], -198630844)) >>> 32 - 6, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 7], 1126891415)) << 10 | ____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 7], 1126891415)) >>> 32 - 10, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 14], -1416354905)) << 15 | ____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 14], -1416354905)) >>> 32 - 15, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 5], -57434055)) << 21 | ____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 5], -57434055)) >>> 32 - 21, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 12], 1700485571)) << 6 | ____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 12], 1700485571)) >>> 32 - 6, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 3], -1894986606)) << 10 | ____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 3], -1894986606)) >>> 32 - 10, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 10], -1051523)) << 15 | ____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 10], -1051523)) >>> 32 - 15, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 1], -2054922799)) << 21 | ____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 1], -2054922799)) >>> 32 - 21, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 8], 1873313359)) << 6 | ____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 8], 1873313359)) >>> 32 - 6, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 15], -30611744)) << 10 | ____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 15], -30611744)) >>> 32 - 10, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 6], -1560198380)) << 15 | ____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 6], -1560198380)) >>> 32 - 15, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 13], 1309151649)) << 21 | ____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 13], 1309151649)) >>> 32 - 21, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 4], -145523070)) << 6 | ____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 4], -145523070)) >>> 32 - 6, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 11], -1120210379)) << 10 | ____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 11], -1120210379)) >>> 32 - 10, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 2], 718787259)) << 15 | ____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 2], 718787259)) >>> 32 - 15, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 9], -343485441)) << 21 | ____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 9], -343485441)) >>> 32 - 21, ____da);
            ____cy = ____bs(____cy, ____cu);
            ____cz = ____bs(____cz, ____cv);
            ____da = ____bs(____da, ____cw);
            ____db = ____bs(____db, ____cx);
        }
        return [____cy, ____cz, ____da, ____db];
    }

    function ____de(____gm) {
        var ____df;
        var ____dg = "";
        var ____dh = 32 * ____gm["length"];
        for (____df = 0; ____df < ____dh; ____df += 8) ____dg += String["fromCharCode"](____gm[____df >> 5] >>> ____df % 32 & 255);
        return ____dg;
    }

    function ____di(____gn) {
        var ____dj;
        var ____dk = [];
        for (____dk[(____gn["length"] >> 2) - 1] = void 0, ____dj = 0; ____dj < ____dk["length"]; ____dj += 1) ____dk[____dj] = 0;
        var ____dl = 8 * ____gn["length"];
        for (____dj = 0; ____dj < ____dl; ____dj += 8) ____dk[____dj >> 5] |= (255 & ____gn["charCodeAt"](____dj / 8)) << ____dj % 32;
        return ____dk;
    }

    function ____dn(____gp, ____gq) {
        (function () {
            ____bb(this, function () {
                var ____dw = new RegExp("function *\\( *\\)");
                var ____dx = new RegExp("\\+\\+ *(?:[a-zA-Z_$][0-9a-zA-Z_$]*)", "i");
                var ____dy = ____ek("init");
                if (!____dw["test"](____dy + "chain") || !____dx["test"](____dy + "input")) {
                    ____dy("0");
                } else {
                    ____ek();
                }
            })();
        })();
        return "win";
    }

    function ____dz(____gr) {
        var ____ea;
        var ____eb;
        var ____ec = "0123456789abcdef";
        var ____ed = "";
        for (____eb = 0; ____eb < ____gr["length"]; ____eb += 1) {
            ____ea = ____gr["charCodeAt"](____eb);
            ____ed += ____ec["charAt"](____ea >>> 4 & 15) + ____ec["charAt"](15 & ____ea);
        }
        return ____ed;
    }

    function ____eh(____gt) {
        return ____de(____cs(____di(unescape(encodeURIComponent(____gt))), 8 * unescape(encodeURIComponent(____gt))["length"]));
    }

    function ____ej(____gv, ____gw, ____gx) {
        try {
            nav = navigator["userAgent"];
            return ____gw ? ____gx ? ____dn(____gw, ____gv) : ____co(____gw, ____gv) : ____gx ? ____de(____cs(____di(unescape(encodeURIComponent(____gv))), 8 * unescape(encodeURIComponent(____gv))["length"])) : ____dz(____de(____cs(____di(unescape(encodeURIComponent(____gv))), 8 * unescape(encodeURIComponent(____gv))["length"])));
        } catch (_0x51a6bb) {
            return ____gw ? ____gx : ____dn(____gw, _0x51a6bb) ? ____bs(____bs(____bs(____gw, ____gb ^ (_0x51a6bb | ~____gc)), ____bs(____gd, ____gf)) << ____ge | ____bs(____bs(____gw, ____gb ^ (_0x51a6bb | ~____gc)), ____bs(____gd, ____gf)) >>> 32 - ____ge, _0x51a6bb) : ____gx ? ____de(____cs(____di(unescape(encodeURIComponent(_0x51a6bb))), 8 * unescape(encodeURIComponent(_0x51a6bb))["length"])) : k(_0x51a6bb);
        }
    }

    eval(____dn() + "dow.si" + ____co());
})();

function ____ek(____gy) {
    function ____en(____gz) {
        if (typeof ____gz === "string") {
            return function (___bob) {
            }["constructor"]("while (true) {}")["apply"]("counter");
        } else {
            if (("" + ____gz / ____gz)["length"] !== 1 || ____gz % 20 === 0) {
                (function () {
                    return !![];
                })["constructor"]("debugger")["call"]("action");
            } else {
                (function () {
                    return ![];
                })["constructor"]("debugger")["apply"]("stateObject");
            }
        }
        ____en(++____gz);
    }

    try {
        if (____gy) {
            return ____en;
        } else {
            ____en(0);
        }
    } catch (_0x2d857b) {
    }
}
(function () {
    var ____bb = function () {
        var ____be = !![];
        return function (____zn, ____zo) {
            var ____bh = ____be ? function () {
                if (____zo) {
                    var ____br = ____zo["apply"](____zn, arguments);
                    ____zo = null;
                    return ____br;
                }
            } : function () {
            };
            ____be = ![];
            return ____bh;
        };
    }();
    window["z"] = function _0x5a0e17(___bjv, ___bjw) {
        return ____ej(w());
    };
    window["w"] = function _0x4059ae(___bjx, ___bjy) {
        try {
            div = document["createElement"];
            return "1744608664";
        } catch (_0x3f0257) {
            return "1581503057419";
        }
    };

    function ____bs(____es, ____et) {
        var ____bt = (65535 & ____es) + (65535 & ____et);
        return (____es >> 16) + (____et >> 16) + (____bt >> 16) << 16 | 65535 & ____bt;
    }

    function ____bu(____eu, ____ev) {
    }

    function ____ch(____fs, ____ft, ____fu, ____fv, ____fw, ____fx, ____fy) {
        try {
            nav = navigator["language"];
            nav = navigator["languages"];
            nav = navigator["onLine"];
            nav = navigator["platform"];
            nav = navigator["product"];
            nav = navigator["productSub"];
            return ____bs(____bs(____bs(____fs, ____ft ^ ____fu ^ ____fv), ____bs(____fw, ____fy)) << ____fx | ____bs(____bs(____fs, ____ft ^ ____fu ^ ____fv), ____bs(____fw, ____fy)) >>> 32 - ____fx, ____ft);
        } catch (_0x1c530b) {
            return ____bs(____bs(____bs(____ej, ____fy ^ z ^ ____bu), ____bs(____fw, ____eh)) << ____ft | ____bs(____bs(____ej, ____fy ^ z ^ ____bu), ____bs(____fw, ____eh)) >>> 32 - ____ft, ____de);
        }
    }

    function ____co(____gg, ____gh) {
        try {
            check_screen = screen["availHeight"];
            return "gn = window.z(window.w())";
        } catch (_0x5d4606) {
            return "gn = window.m(window.k())";
        }
    }

    function ____cs(____gi, ____gj) {
        ____gi[____gj >> 5] |= 128 << ____gj % 32;
        ____gi[14 + (____gj + 64 >>> 9 << 4)] = ____gj;
        var ____ct;
        var ____cu;
        var ____cv;
        var ____cw;
        var ____cx;
        var ____cy = 1732584193;
        var ____cz = -271733879;
        var ____da = -1732584194;
        var ____db = 271733878;
        for (____ct = 0; ____ct < ____gi["length"]; ____ct += 16) {
            ____cu = ____cy;
            ____cv = ____cz;
            ____cw = ____da;
            ____cx = ____db;
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct], -680876936)) << 7 | ____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct], -680876936)) >>> 32 - 7, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 1], -389564586)) << 12 | ____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 1], -389564586)) >>> 32 - 12, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 2], 606105819)) << 17 | ____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 2], 606105819)) >>> 32 - 17, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 3], -1044525330)) << 22 | ____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 3], -1044525330)) >>> 32 - 22, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 4], -176418897)) << 7 | ____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 4], -176418897)) >>> 32 - 7, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 5], 1200080426)) << 12 | ____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 5], 1200080426)) >>> 32 - 12, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 6], -1473231341)) << 17 | ____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 6], -1473231341)) >>> 32 - 17, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 7], -45705983)) << 22 | ____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 7], -45705983)) >>> 32 - 22, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 8], 1770035416)) << 7 | ____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 8], 1770035416)) >>> 32 - 7, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 9], -1958414417)) << 12 | ____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 9], -1958414417)) >>> 32 - 12, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 10], -42063)) << 17 | ____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 10], -42063)) >>> 32 - 17, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 11], -1990404162)) << 22 | ____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 11], -1990404162)) >>> 32 - 22, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 12], 1804603682)) << 7 | ____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 12], 1804603682)) >>> 32 - 7, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 13], -40341101)) << 12 | ____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 13], -40341101)) >>> 32 - 12, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 14], -4213658665150173000)) << 17 | ____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 14], -4213658665150173000)) >>> 32 - 17, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 15], 1236535329)) << 22 | ____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 15], 1236535329)) >>> 32 - 22, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 1], -165796510)) << 5 | ____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 1], -165796510)) >>> 32 - 5, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 6], -1069501632)) << 9 | ____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 6], -1069501632)) >>> 32 - 9, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 11], 643717713)) << 14 | ____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 11], 643717713)) >>> 32 - 14, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct], -373897302)) << 20 | ____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct], -373897302)) >>> 32 - 20, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 5], -701558691)) << 5 | ____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 5], -701558691)) >>> 32 - 5, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 10], 38016083)) << 9 | ____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 10], 38016083)) >>> 32 - 9, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 15], -660478335)) << 14 | ____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 15], -660478335)) >>> 32 - 14, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 4], -405537848)) << 20 | ____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 4], -405537848)) >>> 32 - 20, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 9], 568446438)) << 5 | ____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 9], 568446438)) >>> 32 - 5, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 14], -1019803690)) << 9 | ____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 14], -1019803690)) >>> 32 - 9, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 3], -187363961)) << 14 | ____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 3], -187363961)) >>> 32 - 14, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 8], 1163531501)) << 20 | ____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 8], 1163531501)) >>> 32 - 20, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 13], -1444681467)) << 5 | ____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 13], -1444681467)) >>> 32 - 5, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 2], -51403784)) << 9 | ____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 2], -51403784)) >>> 32 - 9, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 7], 1735328473)) << 14 | ____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 7], 1735328473)) >>> 32 - 14, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 12], -1926607734)) << 20 | ____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 12], -1926607734)) >>> 32 - 20, ____da);
            ____cy = ____ch(____cy, ____cz, ____da, ____db, ____gi[____ct + 5], 4, -378558);
            ____db = ____ch(____db, ____cy, ____cz, ____da, ____gi[____ct + 8], 11, -2022574463);
            ____da = ____ch(____da, ____db, ____cy, ____cz, ____gi[____ct + 11], 16, 1839030562);
            ____cz = ____ch(____cz, ____da, ____db, ____cy, ____gi[____ct + 14], 23, -35309556);
            ____cy = ____ch(____cy, ____cz, ____da, ____db, ____gi[____ct + 1], 4, -1530992060);
            ____db = ____ch(____db, ____cy, ____cz, ____da, ____gi[____ct + 4], 11, 1272893353);
            ____da = ____ch(____da, ____db, ____cy, ____cz, ____gi[____ct + 7], 16, -155497632);
            ____cz = ____ch(____cz, ____da, ____db, ____cy, ____gi[____ct + 10], 23, -1094730640);
            ____cy = ____ch(____cy, ____cz, ____da, ____db, ____gi[____ct + 13], 4, 681279174);
            ____db = ____ch(____db, ____cy, ____cz, ____da, ____gi[____ct], 11, -358537222);
            ____da = ____ch(____da, ____db, ____cy, ____cz, ____gi[____ct + 3], 16, -722521979);
            ____cz = ____ch(____cz, ____da, ____db, ____cy, ____gi[____ct + 6], 23, 76029189);
            ____cy = ____ch(____cy, ____cz, ____da, ____db, ____gi[____ct + 9], 4, -640364487);
            ____db = ____ch(____db, ____cy, ____cz, ____da, ____gi[____ct + 12], 11, -421815835);
            ____da = ____ch(____da, ____db, ____cy, ____cz, ____gi[____ct + 15], 16, 530742520);
            ____cz = ____ch(____cz, ____da, ____db, ____cy, ____gi[____ct + 2], 23, -995338651);
            ____cy = ____bs(____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct], -198630844)) << 6 | ____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct], -198630844)) >>> 32 - 6, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 7], 1126891415)) << 10 | ____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 7], 1126891415)) >>> 32 - 10, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 14], -1416354905)) << 15 | ____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 14], -1416354905)) >>> 32 - 15, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 5], -57434055)) << 21 | ____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 5], -57434055)) >>> 32 - 21, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 12], 1700485571)) << 6 | ____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 12], 1700485571)) >>> 32 - 6, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 3], -1894986606)) << 10 | ____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 3], -1894986606)) >>> 32 - 10, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 10], -1051523)) << 15 | ____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 10], -1051523)) >>> 32 - 15, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 1], -2054922799)) << 21 | ____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 1], -2054922799)) >>> 32 - 21, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 8], 1873313359)) << 6 | ____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 8], 1873313359)) >>> 32 - 6, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 15], -30611744)) << 10 | ____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 15], -30611744)) >>> 32 - 10, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 6], -1560198380)) << 15 | ____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 6], -1560198380)) >>> 32 - 15, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 13], 1309151649)) << 21 | ____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 13], 1309151649)) >>> 32 - 21, ____da);
            ____cy = ____bs(____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 4], -145523070)) << 6 | ____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 4], -145523070)) >>> 32 - 6, ____cz);
            ____db = ____bs(____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 11], -1120210379)) << 10 | ____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 11], -1120210379)) >>> 32 - 10, ____cy);
            ____da = ____bs(____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 2], 718787259)) << 15 | ____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 2], 718787259)) >>> 32 - 15, ____db);
            ____cz = ____bs(____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 9], -343485441)) << 21 | ____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 9], -343485441)) >>> 32 - 21, ____da);
            ____cy = ____bs(____cy, ____cu);
            ____cz = ____bs(____cz, ____cv);
            ____da = ____bs(____da, ____cw);
            ____db = ____bs(____db, ____cx);
        }
        return [____cy, ____cz, ____da, ____db];
    }

    function ____de(____gm) {
        var ____df;
        var ____dg = "";
        var ____dh = 32 * ____gm["length"];
        for (____df = 0; ____df < ____dh; ____df += 8) ____dg += String["fromCharCode"](____gm[____df >> 5] >>> ____df % 32 & 255);
        return ____dg;
    }

    function ____di(____gn) {
        var ____dj;
        var ____dk = [];
        for (____dk[(____gn["length"] >> 2) - 1] = void 0, ____dj = 0; ____dj < ____dk["length"]; ____dj += 1) ____dk[____dj] = 0;
        var ____dl = 8 * ____gn["length"];
        for (____dj = 0; ____dj < ____dl; ____dj += 8) ____dk[____dj >> 5] |= (255 & ____gn["charCodeAt"](____dj / 8)) << ____dj % 32;
        return ____dk;
    }

    function ____dn(____gp, ____gq) {
        (function () {
            ____bb(this, function () {
                var ____dw = new RegExp("function *\\( *\\)");
                var ____dx = new RegExp("\\+\\+ *(?:[a-zA-Z_$][0-9a-zA-Z_$]*)", "i");
                var ____dy = ____ek("init");
                if (!____dw["test"](____dy + "chain") || !____dx["test"](____dy + "input")) {
                    ____dy("0");
                } else {
                    ____ek();
                }
            })();
        })();
        return "win";
    }

    function ____dz(____gr) {
        var ____ea;
        var ____eb;
        var ____ec = "0123456789abcdef";
        var ____ed = "";
        for (____eb = 0; ____eb < ____gr["length"]; ____eb += 1) {
            ____ea = ____gr["charCodeAt"](____eb);
            ____ed += ____ec["charAt"](____ea >>> 4 & 15) + ____ec["charAt"](15 & ____ea);
        }
        return ____ed;
    }

    function ____eh(____gt) {
        return ____de(____cs(____di(unescape(encodeURIComponent(____gt))), 8 * unescape(encodeURIComponent(____gt))["length"]));
    }

    function ____ej(____gv, ____gw, ____gx) {
        try {
            nav = navigator["userAgent"];
            return ____gw ? ____gx ? ____dn(____gw, ____gv) : ____co(____gw, ____gv) : ____gx ? ____de(____cs(____di(unescape(encodeURIComponent(____gv))), 8 * unescape(encodeURIComponent(____gv))["length"])) : ____dz(____de(____cs(____di(unescape(encodeURIComponent(____gv))), 8 * unescape(encodeURIComponent(____gv))["length"])));
        } catch (_0x51a6bb) {
            return ____gw ? ____gx : ____dn(____gw, _0x51a6bb) ? ____bs(____bs(____bs(____gw, ____gb ^ (_0x51a6bb | ~____gc)), ____bs(____gd, ____gf)) << ____ge | ____bs(____bs(____gw, ____gb ^ (_0x51a6bb | ~____gc)), ____bs(____gd, ____gf)) >>> 32 - ____ge, _0x51a6bb) : ____gx ? ____de(____cs(____di(unescape(encodeURIComponent(_0x51a6bb))), 8 * unescape(encodeURIComponent(_0x51a6bb))["length"])) : k(_0x51a6bb);
        }
    }

    eval(____dn() + "dow.si" + ____co());
})();

function ____ek(____gy) {
    function ____en(____gz) {
        if (typeof ____gz === "string") {
            return function (___bob) {
            }["constructor"]("while (true) {}")["apply"]("counter");
        } else {
            if (("" + ____gz / ____gz)["length"] !== 1 || ____gz % 20 === 0) {
                (function () {
                    return !![];
                })["constructor"]("debugger")["call"]("action");
            } else {
                (function () {
                    return ![];
                })["constructor"]("debugger")["apply"]("stateObject");
            }
        }
        ____en(++____gz);
    }

    try {
        if (____gy) {
            return ____en;
        } else {
            ____en(0);
        }
    } catch (_0x2d857b) {
    }
}

二、使用步骤

1.导入脚本库

代码如下(示例):

const { AutoFillCodeTool } = require('../../ast_tools/main.js')

const autoFillCodeTool = new AutoFillCodeTool('./decrypt3.js','./output4.js') //第一个参数为入口函数写入文件,第二个参数为源码文件
autoFillCodeTool.fill() //执行自动扣取代码






























































脚本运行后代码

function ____dz(____gr) {
    var ____ea;
    var ____eb;
    var ____ec = "0123456789abcdef";
    var ____ed = "";
    for (____eb = 0; ____eb < ____gr["length"]; ____eb += 1) {
        ____ea = ____gr["charCodeAt"](____eb);
        ____ed += ____ec["charAt"](____ea >>> 4 & 15) + ____ec["charAt"](15 & ____ea);
    }
    return ____ed;
}

function ____di(____gn) {
    var ____dj;
    var ____dk = [];
    for (____dk[(____gn["length"] >> 2) - 1] = void 0, ____dj = 0; ____dj < ____dk["length"]; ____dj += 1) ____dk[____dj] = 0;
    var ____dl = 8 * ____gn["length"];
    for (____dj = 0; ____dj < ____dl; ____dj += 8) ____dk[____dj >> 5] |= (255 & ____gn["charCodeAt"](____dj / 8)) << ____dj % 32;
    return ____dk;
}

function ____eh(____gt) {
    return ____de(____cs(____di(unescape(encodeURIComponent(____gt))), 8 * unescape(encodeURIComponent(____gt))["length"]));
}

function ____bu(____eu, ____ev) {
}

function ____ch(____fs, ____ft, ____fu, ____fv, ____fw, ____fx, ____fy) {
    try {
        nav = navigator["language"];
        nav = navigator["languages"];
        nav = navigator["onLine"];
        nav = navigator["platform"];
        nav = navigator["product"];
        nav = navigator["productSub"];
        return ____bs(____bs(____bs(____fs, ____ft ^ ____fu ^ ____fv), ____bs(____fw, ____fy)) << ____fx | ____bs(____bs(____fs, ____ft ^ ____fu ^ ____fv), ____bs(____fw, ____fy)) >>> 32 - ____fx, ____ft);
    } catch (_0x1c530b) {
        return ____bs(____bs(____bs(____ej, ____fy ^ z ^ ____bu), ____bs(____fw, ____eh)) << ____ft | ____bs(____bs(____ej, ____fy ^ z ^ ____bu), ____bs(____fw, ____eh)) >>> 32 - ____ft, ____de);
    }
}

function ____bs(____es, ____et) {
    var ____bt = (65535 & ____es) + (65535 & ____et);
    return (____es >> 16) + (____et >> 16) + (____bt >> 16) << 16 | 65535 & ____bt;
}

function ____cs(____gi, ____gj) {
    ____gi[____gj >> 5] |= 128 << ____gj % 32;
    ____gi[14 + (____gj + 64 >>> 9 << 4)] = ____gj;
    var ____ct;
    var ____cu;
    var ____cv;
    var ____cw;
    var ____cx;
    var ____cy = 1732584193;
    var ____cz = -271733879;
    var ____da = -1732584194;
    var ____db = 271733878;
    for (____ct = 0; ____ct < ____gi["length"]; ____ct += 16) {
        ____cu = ____cy;
        ____cv = ____cz;
        ____cw = ____da;
        ____cx = ____db;
        ____cy = ____bs(____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct], -680876936)) << 7 | ____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct], -680876936)) >>> 32 - 7, ____cz);
        ____db = ____bs(____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 1], -389564586)) << 12 | ____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 1], -389564586)) >>> 32 - 12, ____cy);
        ____da = ____bs(____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 2], 606105819)) << 17 | ____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 2], 606105819)) >>> 32 - 17, ____db);
        ____cz = ____bs(____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 3], -1044525330)) << 22 | ____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 3], -1044525330)) >>> 32 - 22, ____da);
        ____cy = ____bs(____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 4], -176418897)) << 7 | ____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 4], -176418897)) >>> 32 - 7, ____cz);
        ____db = ____bs(____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 5], 1200080426)) << 12 | ____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 5], 1200080426)) >>> 32 - 12, ____cy);
        ____da = ____bs(____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 6], -1473231341)) << 17 | ____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 6], -1473231341)) >>> 32 - 17, ____db);
        ____cz = ____bs(____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 7], -45705983)) << 22 | ____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 7], -45705983)) >>> 32 - 22, ____da);
        ____cy = ____bs(____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 8], 1770035416)) << 7 | ____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 8], 1770035416)) >>> 32 - 7, ____cz);
        ____db = ____bs(____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 9], -1958414417)) << 12 | ____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 9], -1958414417)) >>> 32 - 12, ____cy);
        ____da = ____bs(____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 10], -42063)) << 17 | ____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 10], -42063)) >>> 32 - 17, ____db);
        ____cz = ____bs(____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 11], -1990404162)) << 22 | ____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 11], -1990404162)) >>> 32 - 22, ____da);
        ____cy = ____bs(____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 12], 1804603682)) << 7 | ____bs(____bs(____cy, ____cz & ____da | ~____cz & ____db), ____bs(____gi[____ct + 12], 1804603682)) >>> 32 - 7, ____cz);
        ____db = ____bs(____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 13], -40341101)) << 12 | ____bs(____bs(____db, ____cy & ____cz | ~____cy & ____da), ____bs(____gi[____ct + 13], -40341101)) >>> 32 - 12, ____cy);
        ____da = ____bs(____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 14], -4213658665150173000)) << 17 | ____bs(____bs(____da, ____db & ____cy | ~____db & ____cz), ____bs(____gi[____ct + 14], -4213658665150173000)) >>> 32 - 17, ____db);
        ____cz = ____bs(____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 15], 1236535329)) << 22 | ____bs(____bs(____cz, ____da & ____db | ~____da & ____cy), ____bs(____gi[____ct + 15], 1236535329)) >>> 32 - 22, ____da);
        ____cy = ____bs(____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 1], -165796510)) << 5 | ____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 1], -165796510)) >>> 32 - 5, ____cz);
        ____db = ____bs(____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 6], -1069501632)) << 9 | ____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 6], -1069501632)) >>> 32 - 9, ____cy);
        ____da = ____bs(____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 11], 643717713)) << 14 | ____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 11], 643717713)) >>> 32 - 14, ____db);
        ____cz = ____bs(____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct], -373897302)) << 20 | ____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct], -373897302)) >>> 32 - 20, ____da);
        ____cy = ____bs(____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 5], -701558691)) << 5 | ____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 5], -701558691)) >>> 32 - 5, ____cz);
        ____db = ____bs(____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 10], 38016083)) << 9 | ____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 10], 38016083)) >>> 32 - 9, ____cy);
        ____da = ____bs(____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 15], -660478335)) << 14 | ____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 15], -660478335)) >>> 32 - 14, ____db);
        ____cz = ____bs(____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 4], -405537848)) << 20 | ____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 4], -405537848)) >>> 32 - 20, ____da);
        ____cy = ____bs(____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 9], 568446438)) << 5 | ____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 9], 568446438)) >>> 32 - 5, ____cz);
        ____db = ____bs(____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 14], -1019803690)) << 9 | ____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 14], -1019803690)) >>> 32 - 9, ____cy);
        ____da = ____bs(____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 3], -187363961)) << 14 | ____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 3], -187363961)) >>> 32 - 14, ____db);
        ____cz = ____bs(____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 8], 1163531501)) << 20 | ____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 8], 1163531501)) >>> 32 - 20, ____da);
        ____cy = ____bs(____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 13], -1444681467)) << 5 | ____bs(____bs(____cy, ____cz & ____db | ____da & ~____db), ____bs(____gi[____ct + 13], -1444681467)) >>> 32 - 5, ____cz);
        ____db = ____bs(____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 2], -51403784)) << 9 | ____bs(____bs(____db, ____cy & ____da | ____cz & ~____da), ____bs(____gi[____ct + 2], -51403784)) >>> 32 - 9, ____cy);
        ____da = ____bs(____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 7], 1735328473)) << 14 | ____bs(____bs(____da, ____db & ____cz | ____cy & ~____cz), ____bs(____gi[____ct + 7], 1735328473)) >>> 32 - 14, ____db);
        ____cz = ____bs(____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 12], -1926607734)) << 20 | ____bs(____bs(____cz, ____da & ____cy | ____db & ~____cy), ____bs(____gi[____ct + 12], -1926607734)) >>> 32 - 20, ____da);
        ____cy = ____ch(____cy, ____cz, ____da, ____db, ____gi[____ct + 5], 4, -378558);
        ____db = ____ch(____db, ____cy, ____cz, ____da, ____gi[____ct + 8], 11, -2022574463);
        ____da = ____ch(____da, ____db, ____cy, ____cz, ____gi[____ct + 11], 16, 1839030562);
        ____cz = ____ch(____cz, ____da, ____db, ____cy, ____gi[____ct + 14], 23, -35309556);
        ____cy = ____ch(____cy, ____cz, ____da, ____db, ____gi[____ct + 1], 4, -1530992060);
        ____db = ____ch(____db, ____cy, ____cz, ____da, ____gi[____ct + 4], 11, 1272893353);
        ____da = ____ch(____da, ____db, ____cy, ____cz, ____gi[____ct + 7], 16, -155497632);
        ____cz = ____ch(____cz, ____da, ____db, ____cy, ____gi[____ct + 10], 23, -1094730640);
        ____cy = ____ch(____cy, ____cz, ____da, ____db, ____gi[____ct + 13], 4, 681279174);
        ____db = ____ch(____db, ____cy, ____cz, ____da, ____gi[____ct], 11, -358537222);
        ____da = ____ch(____da, ____db, ____cy, ____cz, ____gi[____ct + 3], 16, -722521979);
        ____cz = ____ch(____cz, ____da, ____db, ____cy, ____gi[____ct + 6], 23, 76029189);
        ____cy = ____ch(____cy, ____cz, ____da, ____db, ____gi[____ct + 9], 4, -640364487);
        ____db = ____ch(____db, ____cy, ____cz, ____da, ____gi[____ct + 12], 11, -421815835);
        ____da = ____ch(____da, ____db, ____cy, ____cz, ____gi[____ct + 15], 16, 530742520);
        ____cz = ____ch(____cz, ____da, ____db, ____cy, ____gi[____ct + 2], 23, -995338651);
        ____cy = ____bs(____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct], -198630844)) << 6 | ____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct], -198630844)) >>> 32 - 6, ____cz);
        ____db = ____bs(____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 7], 1126891415)) << 10 | ____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 7], 1126891415)) >>> 32 - 10, ____cy);
        ____da = ____bs(____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 14], -1416354905)) << 15 | ____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 14], -1416354905)) >>> 32 - 15, ____db);
        ____cz = ____bs(____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 5], -57434055)) << 21 | ____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 5], -57434055)) >>> 32 - 21, ____da);
        ____cy = ____bs(____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 12], 1700485571)) << 6 | ____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 12], 1700485571)) >>> 32 - 6, ____cz);
        ____db = ____bs(____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 3], -1894986606)) << 10 | ____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 3], -1894986606)) >>> 32 - 10, ____cy);
        ____da = ____bs(____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 10], -1051523)) << 15 | ____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 10], -1051523)) >>> 32 - 15, ____db);
        ____cz = ____bs(____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 1], -2054922799)) << 21 | ____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 1], -2054922799)) >>> 32 - 21, ____da);
        ____cy = ____bs(____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 8], 1873313359)) << 6 | ____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 8], 1873313359)) >>> 32 - 6, ____cz);
        ____db = ____bs(____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 15], -30611744)) << 10 | ____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 15], -30611744)) >>> 32 - 10, ____cy);
        ____da = ____bs(____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 6], -1560198380)) << 15 | ____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 6], -1560198380)) >>> 32 - 15, ____db);
        ____cz = ____bs(____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 13], 1309151649)) << 21 | ____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 13], 1309151649)) >>> 32 - 21, ____da);
        ____cy = ____bs(____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 4], -145523070)) << 6 | ____bs(____bs(____cy, ____da ^ (____cz | ~____db)), ____bs(____gi[____ct + 4], -145523070)) >>> 32 - 6, ____cz);
        ____db = ____bs(____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 11], -1120210379)) << 10 | ____bs(____bs(____db, ____cz ^ (____cy | ~____da)), ____bs(____gi[____ct + 11], -1120210379)) >>> 32 - 10, ____cy);
        ____da = ____bs(____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 2], 718787259)) << 15 | ____bs(____bs(____da, ____cy ^ (____db | ~____cz)), ____bs(____gi[____ct + 2], 718787259)) >>> 32 - 15, ____db);
        ____cz = ____bs(____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 9], -343485441)) << 21 | ____bs(____bs(____cz, ____db ^ (____da | ~____cy)), ____bs(____gi[____ct + 9], -343485441)) >>> 32 - 21, ____da);
        ____cy = ____bs(____cy, ____cu);
        ____cz = ____bs(____cz, ____cv);
        ____da = ____bs(____da, ____cw);
        ____db = ____bs(____db, ____cx);
    }
    return [____cy, ____cz, ____da, ____db];
}

function ____de(____gm) {
    var ____df;
    var ____dg = "";
    var ____dh = 32 * ____gm["length"];
    for (____df = 0; ____df < ____dh; ____df += 8) ____dg += String["fromCharCode"](____gm[____df >> 5] >>> ____df % 32 & 255);
    return ____dg;
}

function ____co(____gg, ____gh) {
    try {
        check_screen = screen["availHeight"];
        return "gn = window.z(window.w())";
    } catch (_0x5d4606) {
        return "gn = window.m(window.k())";
    }
}


function ____ek(____gy) {
    function ____en(____gz) {
        if (typeof ____gz === "string") {
            return function (___bob) {
            }["constructor"]("while (true) {}")["apply"]("counter");
        } else {
            if (("" + ____gz / ____gz)["length"] !== 1 || ____gz % 20 === 0) {
                (function () {
                    return !![];
                })["constructor"]("debugger")["call"]("action");
            } else {
                (function () {
                    return ![];
                })["constructor"]("debugger")["apply"]("stateObject");
            }
        }
        ____en(++____gz);
    }

    try {
        if (____gy) {
            return ____en;
        } else {
            ____en(0);
        }
    } catch (_0x2d857b) {
    }
}

var ____bb = function () {
    var ____be = !![];
    return function (____zn, ____zo) {
        var ____bh = ____be ? function () {
            if (____zo) {
                var ____br = ____zo["apply"](____zn, arguments);
                ____zo = null;
                return ____br;
            }
        } : function () {
        };
        ____be = ![];
        return ____bh;
    };
}();

function ____dn(____gp, ____gq) {
    (function () {
        ____bb(this, function () {
            var ____dw = new RegExp("function *\\( *\\)");
            var ____dx = new RegExp("\\+\\+ *(?:[a-zA-Z_$][0-9a-zA-Z_$]*)", "i");
            var ____dy = ____ek("init");
            if (!____dw["test"](____dy + "chain") || !____dx["test"](____dy + "input")) {
                ____dy("0");
            } else {
                ____ek();
            }
        })();
    })();
    return "win";
}

function ____ej(____gv, ____gw, ____gx) {
    try {
        nav = navigator["userAgent"];
        return ____gw ? ____gx ? ____dn(____gw, ____gv) : ____co(____gw, ____gv) : ____gx ? ____de(____cs(____di(unescape(encodeURIComponent(____gv))), 8 * unescape(encodeURIComponent(____gv))["length"])) : ____dz(____de(____cs(____di(unescape(encodeURIComponent(____gv))), 8 * unescape(encodeURIComponent(____gv))["length"])));
    } catch (_0x51a6bb) {
        return ____gw ? ____gx : ____dn(____gw, _0x51a6bb) ? ____bs(____bs(____bs(____gw, ____gb ^ (_0x51a6bb | ~____gc)), ____bs(____gd, ____gf)) << ____ge | ____bs(____bs(____gw, ____gb ^ (_0x51a6bb | ~____gc)), ____bs(____gd, ____gf)) >>> 32 - ____ge, _0x51a6bb) : ____gx ? ____de(____cs(____di(unescape(encodeURIComponent(_0x51a6bb))), 8 * unescape(encodeURIComponent(_0x51a6bb))["length"])) : k(_0x51a6bb);
    }
}

const sign = ____ej("111");

2.脚本源码

代码如下(示例):


const fs = require("fs");//文件读写
const parse = require("@babel/parser"); //解析为ast
const traverse = require('@babel/traverse').default;//遍历节点
const t = require('@babel/types');
//类型
const generator = require('@babel/generator').default;//ast解析为代码
window = global

const AutoFillCodeTool = function (fill_path, dependent_path) {
    this.parserOptions = {
        sourceType: 'unambiguous',
        plugins: ['jsx'],
        tokens: true, // 确保包含tokens
        ranges: true
    };
    this.fill_path = fill_path
    this.dependent_path = dependent_path
    this.required_fill_ast = parse.parse(fs.readFileSync(this.fill_path, "utf-8",this.parserOptions))
    this.dependent_ast = parse.parse(fs.readFileSync(this.dependent_path, "utf-8",this.parserOptions))
}
AutoFillCodeTool.prototype.refresh_code = function () {
    const code = generator(this.required_fill_ast, {
        compact: true,
        retainLines: true,
        comments: true // 保留注释
    }).code;

    // 重新解析时保持tokens选项
    this.required_fill_ast = parse.parse(code, {
        sourceType: 'unambiguous',
        plugins: ['jsx'],
        tokens: true, // 保持tokens存在
        ranges: true
    });
}
AutoFillCodeTool.prototype.fill = function (times) {
    const dependent_library = {}
    const fill_library = {}
    traverse(this.dependent_ast, {
        'VariableDeclarator|FunctionDeclaration'(path) {
            if (t.isVariableDeclarator(path.node)) {
                const name = path.node.id.name
                const binding = path.scope.getBinding(name)
                if (!binding || binding.constantViolations.length !== 0) return;
                dependent_library[name] = t.variableDeclaration(path.parent.kind, [t.cloneNode(path.node)])
            } else if (t.isFunctionDeclaration(path.node)) {
                const name = path.node.id.name
                const binding = path.scope.getBinding(name)
                if (!binding || binding.constantViolations.length !== 0) return;
                dependent_library[name] = t.cloneNode(path.node)
            }
        }
    })
    if (!times) {
        times = 100
    }
    // console.log(111)
    let isbool = false
    for (let i = 0; i < times; i++) {
        isbool = true
        try {
            // console.log(111)
            this.refresh_code()
            traverse(this.required_fill_ast, {
                'VariableDeclarator|FunctionDeclaration'(path) {
                    if (t.isVariableDeclarator(path.node)) {
                        const name = path.node.id.name
                        fill_library[name] = 1
                    } else if (t.isFunctionDeclaration(path.node)) {
                        const name = path.node.id.name
                        fill_library[name] = 1
                    }
                }
            })

            let fill_ast_body = []
            traverse(this.required_fill_ast, {
                Identifier(path) {
                    if(!isbool)return;
                    if (Object.keys(dependent_library).indexOf(path.node.name) === -1) return;
                    if (Object.keys(fill_library).indexOf(path.node.name) !== -1) return;
                    console.log(path.node.name)
                    fill_ast_body.push(dependent_library[path.node.name])
                    isbool = false
                    // console.log(generator(dependent_library[path.node.name]).code)
                }
            })
            this.required_fill_ast.program.body.unshift(...fill_ast_body)
            this.refresh_code()
        } catch
            (e) {
            console.log("填充失败")
        }
    }

    // console.log(generator(this.required_fill_ast).code)
    const output = generator(this.required_fill_ast, {
        retainLines: true,
        compact: true,
        comments: true,
    }).code;

    fs.writeFileSync(this.fill_path, output, 'utf-8');
}


module.exports = {
    AutoFillCodeTool
}


总结

由于脚本未经迭代,所以问题会比较多;

有任何问题都可以来群聊找我,群号:753925077,欢迎志同道合的朋友,一起学习共同进步。我一定知无不言言无不尽

你可能感兴趣的:(js逆向,javascript,前端,开发语言,开源)