这种JS代码是什么方式加密?好高深的样子,如何解密
B2BB.y9r = function () {
    var c = 2;
    while (c !== 1) {
        switch (c) {
        case 2:
            return {
                F: function M(m, P) {
                    var D = 2;
                    while (D !== 10) {
                        switch (D) {
                        case 13:
                            d -= 1;
                            D = 6;
                            break;
                        case 8:
                            D = R < m ? 7 : 11;
                            break;
                        case 7:
                            var d = m - 1;
                            D = 6;
                            break;
                        case 1:
                            var l = 0;
                            D = 5;
                            break;
                        case 3:
                            l += 1;
                            D = 5;
                            break;
                        case 11:
                            return J;
                            D = 10;
                            break;
                        case 14:
                            J[R][(d + P * R) % m] = J[d];
                            D = 13;
                            break;
                        case 9:
                            var R = 0;
                            D = 8;
                            break;
                        case 6:
                            D = d >= 0 ? 14 : 12;
                            break;
                        case 4:
                            J[(l + P) % m] = [];
                            D = 3;
                            break;
                        case 2:
                            var J = [];
                            D = 1;
                            break;
                        case 5:
                            D = l < m ? 4 : 9;
                            break;
                        case 12:
                            R += 1;
                            D = 8;
                            break;
                        }
                    }
                }(48, 14)
            };
            c = 1;
            break;
        }
    }
}();
B2BB.R8z = function () {
    return typeof B2BB.z8z.F === 'function' ? B2BB.z8z.F.apply(B2BB.z8z, arguments) : B2BB.z8z.F;
};function B2BB() {}
B2BB.L9r = function () {
    return typeof B2BB.y9r.F === 'function' ? B2BB.y9r.F.apply(B2BB.y9r, arguments) : B2BB.y9r.F;
};
B2BB.C8z = function () {
    return typeof B2BB.z8z.F === 'function' ? B2BB.z8z.F.apply(B2BB.z8z, arguments) : B2BB.z8z.F;
};
B2BB.X9z = 3;
B2BB.k9r = function () {
    return typeof B2BB.y9r.F === 'function' ? B2BB.y9r.F.apply(B2BB.y9r, arguments) : B2BB.y9r.F;
};
B2BB.z8z = function () {
    var P = 2;
    while (P !== 1) {
        switch (P) {
        case 2:
            return {
                F: function (d) {
                    var c = 2;
                    while (c !== 14) {
                        switch (c) {
                        case 3:
                            m = 0;
                            c = 9;
                            break;
                        case 2:
                            var M = '',
                                R = decodeURI("*3!9%3C6r这里省略掉了一大段,因为长度限制...%25?0?%25)x/7%60%22$):k6%3E!#=494r'9!?2$%03;00%25r5s2;48#%3E!%01%228?!0%015)2(6*%0E%7Dqugib%3C%3Es4p68%19?08#)5%25%0A%3C$82%22;");
                            c = 1;
                            break;
                        case 4:
                            c = m === d.length ? 3 : 9;
                            break;
                        case 8:
                            J++, m++;
                            c = 5;
                            break;
                        case 1:
                            var J = 0,
                                m = 0;
                            c = 5;
                            break;
                        case 5:
                            c = J < R.length ? 4 : 7;
                            break;
                        case 9:
                            M += String.fromCharCode(R.charCodeAt(J) ^ d.charCodeAt(m));
                            c = 8;
                            break;
                        case 7:
                            M = M.split('>');
                            return function (l) {
                                var D = 2;
                                while (D !== 1) {
                                    switch (D) {
                                    case 2:
                                        return M[l];
                                        D = 1;
                                        break;
                                    }
                                }
                            };
                            c = 14;
                            break;
                        }
                    }
                }('LFMU^Q')
            };
            P = 1;
            break;
        }
    }
}();

解决方案 »

  1.   

    就是给B2BB对象设置几个属性
    y9r属性是一个匿名函数,函数中有个while循环,在每次循环中来个switch,我只说其中一个case
    当值为2时,返回一个json对象,这个json对象,这个对象的键为F,值为一个匿名函数(带两个参数m和p),里面又是一层循环和switch,下面应该可以看懂了吧
    B2BB的第二个属性R8z是一个匿名函数
    B2BB的第三个属性C8z是一个匿名函数
    第四个属性X9z值为3
    最后一个属性z8z是一个匿名函数。和第一个属性的函数差不多。