sojson.v5 | jsjiami.com.v5 最新解密方法

话不多说,先上源代码和加密代码。

var a={},b={}; 
(function(w, d) { 
 w.info = "这是一个一系列js操作。"; 
 d.warning = "如果您的JS里嵌套了PHP,JSP标签,等等其他非JavaScript的代码,请提取出来再加密。这个工具不能加密php、jsp等模版内容"; 
 d.intro = "本工具由 www.jsjiami.com 提供接口。"; 
})(a, b);
/*
 * 加密工具已经升级了一个版本,目前为 jsjiami.com.v5 ,主要加强了算法,以及防破解【绝对不可逆】配置,耶稣也无法100%还原,我说的。;
 * 已经打算把这个工具基础功能一直免费下去。还希望支持我。
 * 另外 jsjiami.com.v5 已经强制加入校验,注释可以去掉,但是 jsjiami.com.v5 不能去掉(如果你开通了VIP,可以手动去掉),其他都没有任何绑定。
 * 誓死不会加入任何后门,jsjiami.com JS 加密的使命就是为了保护你们的Javascript 。
 * 警告:如果您恶意去掉 jsjiami.com.v5 那么我们将不会保护您的JavaScript代码。请遵守规则
 * 新版本: https://www.jsjiami.com/ 支持批量加密,支持大文件加密,拥有更多加密。 */
 
;var encode_version = 'jsjiami.com.v5', baayg = '__0xea52c',  __0xea52c=['wqw6wpbDv04=','5Yi26Zis54m/5p6E5Y6G77yuwrLCtuS9s+Wur+aeneW8iOepkQ==','5p+h5bSv5YaW55SZw41yTypTwopYEsO6CsOPXj4ewqnDvEbmjq3kvpnmjqbljYvjgr4=','wqTCpMKHRw==','6LyG5pmG5LuB5LqX5Lih57CQ5YiqDl7mk4rkv5Xjg7U=','woPCucO0OsKHS8K4','5aes5p2v5oOl55i6acOm6YeK5bSC5aSy5LuvdyfCnO+/j8O6wrXCm+aghuevlO+8mOeuseesjOWHpOS7nOmctjoddMOow7AIJDHCgXnnm73ku5rno5/vv7jorqLmjKzlj77lhYzmnajlh5zliI7lr5Xjga3ov6LkuIfltrnlhqrkurHogZ3libXlr4fCizfDvuODpAvCijHnro7mqIbnipvlhovlrYE=','Shxs','FlPCtBHDq8Oia0Nu'];(function(_0x2bd8b4,_0xee823f){var _0x2d8384=function(_0x5db520){while(--_0x5db520){_0x2bd8b4['push'](_0x2bd8b4['shift']());}};_0x2d8384(++_0xee823f);}(__0xea52c,0x14f));var _0x41c1=function(_0x57e444,_0x416365){_0x57e444=_0x57e444-0x0;var _0x5db846=__0xea52c[_0x57e444];if(_0x41c1['initialized']===undefined){(function(){var _0x1536e3=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x532b0c='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x1536e3['atob']||(_0x1536e3['atob']=function(_0x25c712){var _0x46683e=String(_0x25c712)['replace'](/=+$/,'');for(var _0x23a281=0x0,_0x3a04ed,_0x1660f8,_0x2cc873=0x0,_0xd2e94d='';_0x1660f8=_0x46683e['charAt'](_0x2cc873++);~_0x1660f8&&(_0x3a04ed=_0x23a281%0x4?_0x3a04ed*0x40+_0x1660f8:_0x1660f8,_0x23a281++%0x4)?_0xd2e94d+=String['fromCharCode'](0xff&_0x3a04ed>>(-0x2*_0x23a281&0x6)):0x0){_0x1660f8=_0x532b0c['indexOf'](_0x1660f8);}return _0xd2e94d;});}());var _0x5834e5=function(_0x53e335,_0x1a471d){var _0x2f08bb=[],_0x3a26ae=0x0,_0x131d9b,_0x5c9f5b='',_0x2c557b='';_0x53e335=atob(_0x53e335);for(var _0x557985=0x0,_0x341cca=_0x53e335['length'];_0x557985<_0x341cca;_0x557985++){_0x2c557b+='%'+('00'+_0x53e335['charCodeAt'](_0x557985)['toString'](0x10))['slice'](-0x2);}_0x53e335=decodeURIComponent(_0x2c557b);for(var _0x54a2bc=0x0;_0x54a2bc<0x100;_0x54a2bc++){_0x2f08bb[_0x54a2bc]=_0x54a2bc;}for(_0x54a2bc=0x0;_0x54a2bc<0x100;_0x54a2bc++){_0x3a26ae=(_0x3a26ae+_0x2f08bb[_0x54a2bc]+_0x1a471d['charCodeAt'](_0x54a2bc%_0x1a471d['length']))%0x100;_0x131d9b=_0x2f08bb[_0x54a2bc];_0x2f08bb[_0x54a2bc]=_0x2f08bb[_0x3a26ae];_0x2f08bb[_0x3a26ae]=_0x131d9b;}_0x54a2bc=0x0;_0x3a26ae=0x0;for(var _0x57e4f1=0x0;_0x57e4f1<_0x53e335['length'];_0x57e4f1++){_0x54a2bc=(_0x54a2bc+0x1)%0x100;_0x3a26ae=(_0x3a26ae+_0x2f08bb[_0x54a2bc])%0x100;_0x131d9b=_0x2f08bb[_0x54a2bc];_0x2f08bb[_0x54a2bc]=_0x2f08bb[_0x3a26ae];_0x2f08bb[_0x3a26ae]=_0x131d9b;_0x5c9f5b+=String['fromCharCode'](_0x53e335['charCodeAt'](_0x57e4f1)^_0x2f08bb[(_0x2f08bb[_0x54a2bc]+_0x2f08bb[_0x3a26ae])%0x100]);}return _0x5c9f5b;};_0x41c1['rc4']=_0x5834e5;_0x41c1['data']={};_0x41c1['initialized']=!![];}var _0x1a39ea=_0x41c1['data'][_0x57e444];if(_0x1a39ea===undefined){if(_0x41c1['once']===undefined){_0x41c1['once']=!![];}_0x5db846=_0x41c1['rc4'](_0x5db846,_0x416365);_0x41c1['data'][_0x57e444]=_0x5db846;}else{_0x5db846=_0x1a39ea;}return _0x5db846;};var a={},b={};(function(_0x10ba7d,_0x21a119){var _0x3a1cbf={'TGbNd':_0x41c1('0x0','#VEz')};_0x10ba7d[_0x41c1('0x1','#VEz')]=_0x41c1('0x2','hDcR');_0x21a119[_0x41c1('0x3','EKUu')]=_0x41c1('0x4','cSf7');_0x21a119['intro']=_0x3a1cbf['TGbNd'];}(a,b));;(function(_0x29909a,_0x48ac7c,_0x116c3a){var _0x3fb9d2={'sSWBo':'jsjiami.com.v5','TlZnw':'版本号,js会定期弹窗,还请支持我们的工作'};_0x116c3a='al';try{_0x116c3a+=_0x41c1('0x5','lVEH');_0x48ac7c=encode_version;if(!(typeof _0x48ac7c!==_0x41c1('0x6','WQ6%')&&_0x48ac7c===_0x3fb9d2[_0x41c1('0x7','hDcR')])){_0x29909a[_0x116c3a]('删除'+_0x3fb9d2['TlZnw']);}}catch(_0xfc381a){_0x29909a[_0x116c3a](_0x41c1('0x8','j1(#'));}}(window));;encode_version = 'jsjiami.com.v5';

这里方便理解,用的是默认的例子,源代码就6行很简单的东西。

他加密出来的代码默认是压缩过的,我们先格式化一下看看代码结构

/*
 * 加密工具已经升级了一个版本,目前为 jsjiami.com.v5 ,主要加强了算法,以及防破解【绝对不可逆】配置,耶稣也无法100%还原,我说的。;
 * 已经打算把这个工具基础功能一直免费下去。还希望支持我。
 * 另外 jsjiami.com.v5 已经强制加入校验,注释可以去掉,但是 jsjiami.com.v5 不能去掉(如果你开通了VIP,可以手动去掉),其他都没有任何绑定。
 * 誓死不会加入任何后门,jsjiami.com JS 加密的使命就是为了保护你们的Javascript 。
 * 警告:如果您恶意去掉 jsjiami.com.v5 那么我们将不会保护您的JavaScript代码。请遵守规则
 * 新版本: https://www.jsjiami.com/ 支持批量加密,支持大文件加密,拥有更多加密。 */
;
var encode_version = 'jsjiami.com.v5',
    baayg = '__0xea52c',
    __0xea52c = ['wqw6wpbDv04=', '5Yi26Zis54m/5p6E5Y6G77yuwrLCtuS9s+Wur+aeneW8iOepkQ==', '5p+h5bSv5YaW55SZw41yTypTwopYEsO6CsOPXj4ewqnDvEbmjq3kvpnmjqbljYvjgr4=', 'wqTCpMKHRw==', '6LyG5pmG5LuB5LqX5Lih57CQ5YiqDl7mk4rkv5Xjg7U=', 'woPCucO0OsKHS8K4', '5aes5p2v5oOl55i6acOm6YeK5bSC5aSy5LuvdyfCnO+/j8O6wrXCm+aghuevlO+8mOeuseesjOWHpOS7nOmctjoddMOow7AIJDHCgXnnm73ku5rno5/vv7jorqLmjKzlj77lhYzmnajlh5zliI7lr5Xjga3ov6LkuIfltrnlhqrkurHogZ3libXlr4fCizfDvuODpAvCijHnro7mqIbnipvlhovlrYE=', 'Shxs', 'FlPCtBHDq8Oia0Nu'];
(function(_0x2bd8b4, _0xee823f) {
    var _0x2d8384 = function(_0x5db520) {
        while (--_0x5db520) {
            _0x2bd8b4['push'](_0x2bd8b4['shift']());
        }
    };
    _0x2d8384(++_0xee823f);
}(__0xea52c, 0x14f));
var _0x41c1 = function(_0x57e444, _0x416365) {
    _0x57e444 = _0x57e444 - 0x0;
    var _0x5db846 = __0xea52c[_0x57e444];
    if (_0x41c1['initialized'] === undefined) {
        (function() {
            var _0x1536e3 = typeof window !== 'undefined' ? window : typeof process === 'object' && typeof require === 'function' && typeof global === 'object' ? global : this;
            var _0x532b0c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
            _0x1536e3['atob'] || (_0x1536e3['atob'] = function(_0x25c712) {
                var _0x46683e = String(_0x25c712)['replace'](/=+$/, '');
                for (var _0x23a281 = 0x0, _0x3a04ed, _0x1660f8, _0x2cc873 = 0x0, _0xd2e94d = ''; _0x1660f8 = _0x46683e['charAt'](_0x2cc873++); ~_0x1660f8 && (_0x3a04ed = _0x23a281 % 0x4 ? _0x3a04ed * 0x40 + _0x1660f8 : _0x1660f8, _0x23a281++ % 0x4) ? _0xd2e94d += String['fromCharCode'](0xff & _0x3a04ed >> (-0x2 * _0x23a281 & 0x6)) : 0x0) {
                    _0x1660f8 = _0x532b0c['indexOf'](_0x1660f8);
                }
                return _0xd2e94d;
            });
        }());
        var _0x5834e5 = function(_0x53e335, _0x1a471d) {
            var _0x2f08bb = [],
                _0x3a26ae = 0x0,
                _0x131d9b, _0x5c9f5b = '',
                _0x2c557b = '';
            _0x53e335 = atob(_0x53e335);
            for (var _0x557985 = 0x0, _0x341cca = _0x53e335['length']; _0x557985 < _0x341cca; _0x557985++) {
                _0x2c557b += '%' + ('00' + _0x53e335['charCodeAt'](_0x557985)['toString'](0x10))['slice'](-0x2);
            }
            _0x53e335 = decodeURIComponent(_0x2c557b);
            for (var _0x54a2bc = 0x0; _0x54a2bc < 0x100; _0x54a2bc++) {
                _0x2f08bb[_0x54a2bc] = _0x54a2bc;
            }
            for (_0x54a2bc = 0x0; _0x54a2bc < 0x100; _0x54a2bc++) {
                _0x3a26ae = (_0x3a26ae + _0x2f08bb[_0x54a2bc] + _0x1a471d['charCodeAt'](_0x54a2bc % _0x1a471d['length'])) % 0x100;
                _0x131d9b = _0x2f08bb[_0x54a2bc];
                _0x2f08bb[_0x54a2bc] = _0x2f08bb[_0x3a26ae];
                _0x2f08bb[_0x3a26ae] = _0x131d9b;
            }
            _0x54a2bc = 0x0;
            _0x3a26ae = 0x0;
            for (var _0x57e4f1 = 0x0; _0x57e4f1 < _0x53e335['length']; _0x57e4f1++) {
                _0x54a2bc = (_0x54a2bc + 0x1) % 0x100;
                _0x3a26ae = (_0x3a26ae + _0x2f08bb[_0x54a2bc]) % 0x100;
                _0x131d9b = _0x2f08bb[_0x54a2bc];
                _0x2f08bb[_0x54a2bc] = _0x2f08bb[_0x3a26ae];
                _0x2f08bb[_0x3a26ae] = _0x131d9b;
                _0x5c9f5b += String['fromCharCode'](_0x53e335['charCodeAt'](_0x57e4f1) ^ _0x2f08bb[(_0x2f08bb[_0x54a2bc] + _0x2f08bb[_0x3a26ae]) % 0x100]);
            }
            return _0x5c9f5b;
        };
        _0x41c1['rc4'] = _0x5834e5;
        _0x41c1['data'] = {};
        _0x41c1['initialized'] = !![];
    }
    var _0x1a39ea = _0x41c1['data'][_0x57e444];
    if (_0x1a39ea === undefined) {
        if (_0x41c1['once'] === undefined) {
            _0x41c1['once'] = !![];
        }
        _0x5db846 = _0x41c1['rc4'](_0x5db846, _0x416365);
        _0x41c1['data'][_0x57e444] = _0x5db846;
    } else {
        _0x5db846 = _0x1a39ea;
    }
    return _0x5db846;
};
var a = {},
    b = {};
(function(_0x10ba7d, _0x21a119) {
    var _0x3a1cbf = {
        'TGbNd': _0x41c1('0x0', '#VEz')
    };
    _0x10ba7d[_0x41c1('0x1', '#VEz')] = _0x41c1('0x2', 'hDcR');
    _0x21a119[_0x41c1('0x3', 'EKUu')] = _0x41c1('0x4', 'cSf7');
    _0x21a119['intro'] = _0x3a1cbf['TGbNd'];
}(a, b));;
(function(_0x29909a, _0x48ac7c, _0x116c3a) {
    var _0x3fb9d2 = {
        'sSWBo': 'jsjiami.com.v5',
        'TlZnw': '版本号,js会定期弹窗,还请支持我们的工作'
    };
    _0x116c3a = 'al';
    try {
        _0x116c3a += _0x41c1('0x5', 'lVEH');
        _0x48ac7c = encode_version;
        if (!(typeof _0x48ac7c !== _0x41c1('0x6', 'WQ6%') && _0x48ac7c === _0x3fb9d2[_0x41c1('0x7', 'hDcR')])) {
            _0x29909a[_0x116c3a]('删除' + _0x3fb9d2['TlZnw']);
        }
    } catch (_0xfc381a) {
        _0x29909a[_0x116c3a](_0x41c1('0x8', 'j1(#'));
    }
}(window));;
encode_version = 'jsjiami.com.v5';

可以看出来短短6行代码,加密后变成了100多行,变量名也全部都变成一堆乱码了,完全看不出这些变量原本的作用是什么。

我们从上往下分析代码

(function(_0x2bd8b4, _0xee823f) {
    var _0x2d8384 = function(_0x5db520) {
        while (--_0x5db520) {
            _0x2bd8b4['push'](_0x2bd8b4['shift']());
        }
    };
    _0x2d8384(++_0xee823f);
}(__0xea52c, 0x14f));
__0xea52c 是上边的字符串数组,0x14f是一个16进制形式的数字

那么上边大致就是声明了一个自执行的方法将字符串数组根据指定次数切换一下数组内元素位置

具体有什么作用我们不管,先记住这个方法他做过什么,我们继续接着往下看。

var _0x41c1 = function (_0x57e444, _0x416365) {
    _0x57e444 = _0x57e444 - 0x0;
    var _0x5db846 = __0xea52c[_0x57e444];
    if (_0x41c1['initialized'] === undefined) {
        (function () {
            var _0x1536e3 = typeof window !== 'undefined' ? window : typeof process === 'object' && typeof require === 'function' && typeof global === 'object' ? global : this;
            var _0x532b0c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
            _0x1536e3['atob'] || (_0x1536e3['atob'] = function (_0x25c712) {
                var _0x46683e = String(_0x25c712)['replace'](/=+$/, '');
                for (var _0x23a281 = 0x0, _0x3a04ed, _0x1660f8, _0x2cc873 = 0x0, _0xd2e94d = ''; _0x1660f8 = _0x46683e['charAt'](_0x2cc873++); ~_0x1660f8 && (_0x3a04ed = _0x23a281 % 0x4 ? _0x3a04ed * 0x40 + _0x1660f8 : _0x1660f8, _0x23a281++ % 0x4) ? _0xd2e94d += String['fromCharCode'](0xff & _0x3a04ed >> (-0x2 * _0x23a281 & 0x6)) : 0x0) {
                    _0x1660f8 = _0x532b0c['indexOf'](_0x1660f8);
                }
                return _0xd2e94d;
            });
        }());
        var _0x5834e5 = function (_0x53e335, _0x1a471d) {
            var _0x2f08bb = [], _0x3a26ae = 0x0, _0x131d9b, _0x5c9f5b = '', _0x2c557b = '';
            _0x53e335 = atob(_0x53e335);
            for (var _0x557985 = 0x0, _0x341cca = _0x53e335['length']; _0x557985 < _0x341cca; _0x557985++) {
                _0x2c557b += '%' + ('00' + _0x53e335['charCodeAt'](_0x557985)['toString'](0x10))['slice'](-0x2);
            }
            _0x53e335 = decodeURIComponent(_0x2c557b);
            for (var _0x54a2bc = 0x0; _0x54a2bc < 0x100; _0x54a2bc++) {
                _0x2f08bb[_0x54a2bc] = _0x54a2bc;
            }
            for (_0x54a2bc = 0x0; _0x54a2bc < 0x100; _0x54a2bc++) {
                _0x3a26ae = (_0x3a26ae + _0x2f08bb[_0x54a2bc] + _0x1a471d['charCodeAt'](_0x54a2bc % _0x1a471d['length'])) % 0x100;
                _0x131d9b = _0x2f08bb[_0x54a2bc];
                _0x2f08bb[_0x54a2bc] = _0x2f08bb[_0x3a26ae];
                _0x2f08bb[_0x3a26ae] = _0x131d9b;
            }
            _0x54a2bc = 0x0;
            _0x3a26ae = 0x0;
            for (var _0x57e4f1 = 0x0; _0x57e4f1 < _0x53e335['length']; _0x57e4f1++) {
                _0x54a2bc = (_0x54a2bc + 0x1) % 0x100;
                _0x3a26ae = (_0x3a26ae + _0x2f08bb[_0x54a2bc]) % 0x100;
                _0x131d9b = _0x2f08bb[_0x54a2bc];
                _0x2f08bb[_0x54a2bc] = _0x2f08bb[_0x3a26ae];
                _0x2f08bb[_0x3a26ae] = _0x131d9b;
                _0x5c9f5b += String['fromCharCode'](_0x53e335['charCodeAt'](_0x57e4f1) ^ _0x2f08bb[(_0x2f08bb[_0x54a2bc] + _0x2f08bb[_0x3a26ae]) % 0x100]);
            }
            return _0x5c9f5b;
        };
        _0x41c1['rc4'] = _0x5834e5;
        _0x41c1['data'] = {};
        _0x41c1['initialized'] = !![];
    }
    var _0x1a39ea = _0x41c1['data'][_0x57e444];
    if (_0x1a39ea === undefined) {
        if (_0x41c1['once'] === undefined) {
            _0x41c1['once'] = !![];
        }
        _0x5db846 = _0x41c1['rc4'](_0x5db846, _0x416365);
        _0x41c1['data'][_0x57e444] = _0x5db846;
    } else {
        _0x5db846 = _0x1a39ea;
    }
    return _0x5db846;
};

可以看出来,这个方法体内的方法很复杂

到这里有点想放弃了,sojson加密还是很强的,短短几行就加密成这样了,破解难度特别大,这次就到这,休息一下,下次再解吧。


ps:我后边发现一个解密的网站 大家遇到加密文件可以去试试能不能解

www.jsjiami.com/jiemi.html

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值