纯手工解密几大在线js加密网站(2)

0x0.开头

最近闲来无事,来看一下目前网络上哪家加密工具的强度最高的。本人技术有限,最终结果不能代表什么,大家有遇到什么其他的js加密技术破解难题的,也可以一起互相讨论,也可以问我,知无不言。

0x1.介绍

toolfk是一个在线工具网,js加密是其中一个功能。我们来看一下他加密的效果。

0x2.源代码
(function () {
    String.prototype.searchAB = function (){
        return this.match(/[^A|B]/g);
    }
    const str = '本工具由 wwBw.jsjiami.cAom 提供接口。\n专注JS安全领域近10年\n企业化运营\n专业的JS加密研发团队。'.searchAB().toString().replaceAll(',', '');
    alert(str);
    console.log(str);
}());
0x3.加密后
/*
 * -- copyright : https://www.toolfk.com
 */
 (function(_0x48dbf4,_0x4e37f5){const _0x435690=toolfk0_0x1c43,_0x37146e=_0x48dbf4();while(!![]){try{const _0x2da9bd=-parseInt(_0x435690(0x167))/0x1+-parseInt(_0x435690(0x15e))/0x2+parseInt(_0x435690(0x166))/0x3*(parseInt(_0x435690(0x15f))/0x4)+-parseInt(_0x435690(0x16d))/0x5+-parseInt(_0x435690(0x17b))/0x6*(-parseInt(_0x435690(0x162))/0x7)+parseInt(_0x435690(0x163))/0x8+-parseInt(_0x435690(0x174))/0x9*(parseInt(_0x435690(0x16e))/0xa);if(_0x2da9bd===_0x4e37f5)break;else _0x37146e['push'](_0x37146e['shift']());}catch(_0x53e7e6){_0x37146e['push'](_0x37146e['shift']());}}}(toolfk0_0x8b25,0xbd445),(function(){const _0x1f02d2=toolfk0_0x1c43,_0x8d9ce=(function(){let _0x3f40aa=!![];return function(_0x228a84,_0xb5bbe6){const _0x37593c=_0x3f40aa?function(){const _0x50e213=toolfk0_0x1c43;if(_0xb5bbe6){const _0x5650b5=_0xb5bbe6[_0x50e213(0x16c)](_0x228a84,arguments);return _0xb5bbe6=null,_0x5650b5;}}:function(){};return _0x3f40aa=![],_0x37593c;};}()),_0x5da136=_0x8d9ce(this,function(){const _0x267279=toolfk0_0x1c43;return _0x5da136[_0x267279(0x165)]()[_0x267279(0x169)](_0x267279(0x176))[_0x267279(0x165)]()[_0x267279(0x172)](_0x5da136)[_0x267279(0x169)]('(((.+)+)+)+$');});_0x5da136();const _0x5b11f0=(function(){let _0x3070e3=!![];return function(_0x194ba9,_0x159d2f){const _0x3a5063=_0x3070e3?function(){const _0x2e93a6=toolfk0_0x1c43;if(_0x159d2f){const _0x91d467=_0x159d2f[_0x2e93a6(0x16c)](_0x194ba9,arguments);return _0x159d2f=null,_0x91d467;}}:function(){};return _0x3070e3=![],_0x3a5063;};}()),_0x56f151=_0x5b11f0(this,function(){const _0x2ceafc=toolfk0_0x1c43,_0x2fd86f=function(){const _0x5f1632=toolfk0_0x1c43;let _0x4c448f;try{_0x4c448f=Function(_0x5f1632(0x173)+_0x5f1632(0x160)+');')();}catch(_0x1c3a0e){_0x4c448f=window;}return _0x4c448f;},_0xd8384a=_0x2fd86f(),_0x31b285=_0xd8384a['console']=_0xd8384a[_0x2ceafc(0x170)]||{},_0x27c413=[_0x2ceafc(0x171),'warn',_0x2ceafc(0x164),_0x2ceafc(0x161),_0x2ceafc(0x16a),_0x2ceafc(0x16f),_0x2ceafc(0x168)];for(let _0x12a65e=0x0;_0x12a65e<_0x27c413['length'];_0x12a65e++){const _0x5cef9a=_0x5b11f0[_0x2ceafc(0x172)][_0x2ceafc(0x16b)][_0x2ceafc(0x179)](_0x5b11f0),_0x2fbdbd=_0x27c413[_0x12a65e],_0x59fe04=_0x31b285[_0x2fbdbd]||_0x5cef9a;_0x5cef9a[_0x2ceafc(0x175)]=_0x5b11f0[_0x2ceafc(0x179)](_0x5b11f0),_0x5cef9a['toString']=_0x59fe04[_0x2ceafc(0x165)]['bind'](_0x59fe04),_0x31b285[_0x2fbdbd]=_0x5cef9a;}});_0x56f151(),String[_0x1f02d2(0x16b)][_0x1f02d2(0x178)]=function(){const _0x2e17f1=_0x1f02d2;return this[_0x2e17f1(0x17a)](/[^A|B]/g);};const _0x27dd80=_0x1f02d2(0x177)[_0x1f02d2(0x178)]()[_0x1f02d2(0x165)]()['replaceAll'](',','');alert(_0x27dd80),console[_0x1f02d2(0x171)](_0x27dd80);}()));function toolfk0_0x1c43(_0x2a16d3,_0xf9ff2d){const _0x218a04=toolfk0_0x8b25();return toolfk0_0x1c43=function(_0x186891,_0x907f45){_0x186891=_0x186891-0x15e;let _0x4c3d84=_0x218a04[_0x186891];return _0x4c3d84;},toolfk0_0x1c43(_0x2a16d3,_0xf9ff2d);}function toolfk0_0x8b25(){const _0x536949=['prototype','apply','3919805CYsnIX','806680FZZQIG','table','console','log','constructor','return\x20(function()\x20','81eoqmUx','__proto__','(((.+)+)+)+$','本工具由\x20wwBw.jsjiami.cAom\x20提供接口。\x0a专注JS安全领域近10年\x0a企业化运营\x0a专业的JS加密研发团队。','searchAB','bind','match','6QqoubG','520894jaVcAt','1203324decTdp','{}.constructor(\x22return\x20this\x22)(\x20)','error','8902117ZxVmhh','9468488VMGDVi','info','toString','3kdEiZQ','210466giazBR','trace','search','exception'];toolfk0_0x8b25=function(){return _0x536949;};return toolfk0_0x8b25();}
0x4.格式化一下
/*
 * -- copyright : https://www.toolfk.com
 */
(function (_0x48dbf4, _0x4e37f5) {
    const _0x435690 = toolfk0_0x1c43, _0x37146e = _0x48dbf4();
    while (!![]) {
        try {
            const _0x2da9bd = -parseInt(_0x435690(0x167)) / 0x1 + -parseInt(_0x435690(0x15e)) / 0x2 + parseInt(_0x435690(0x166)) / 0x3 * (parseInt(_0x435690(0x15f)) / 0x4) + -parseInt(_0x435690(0x16d)) / 0x5 + -parseInt(_0x435690(0x17b)) / 0x6 * (-parseInt(_0x435690(0x162)) / 0x7) + parseInt(_0x435690(0x163)) / 0x8 + -parseInt(_0x435690(0x174)) / 0x9 * (parseInt(_0x435690(0x16e)) / 0xa);
            if (_0x2da9bd === _0x4e37f5) break; else _0x37146e['push'](_0x37146e['shift']());
        } catch (_0x53e7e6) {
            _0x37146e['push'](_0x37146e['shift']());
        }
    }
}(toolfk0_0x8b25, 0xbd445), (function () {
    const _0x1f02d2 = toolfk0_0x1c43, _0x8d9ce = (function () {
        let _0x3f40aa = !![];
        return function (_0x228a84, _0xb5bbe6) {
            const _0x37593c = _0x3f40aa ? function () {
                const _0x50e213 = toolfk0_0x1c43;
                if (_0xb5bbe6) {
                    const _0x5650b5 = _0xb5bbe6[_0x50e213(0x16c)](_0x228a84, arguments);
                    return _0xb5bbe6 = null, _0x5650b5;
                }
            } : function () {
            };
            return _0x3f40aa = ![], _0x37593c;
        };
    }()), _0x5da136 = _0x8d9ce(this, function () {
        const _0x267279 = toolfk0_0x1c43;
        return _0x5da136[_0x267279(0x165)]()[_0x267279(0x169)](_0x267279(0x176))[_0x267279(0x165)]()[_0x267279(0x172)](_0x5da136)[_0x267279(0x169)]('(((.+)+)+)+$');
    });
    _0x5da136();
    const _0x5b11f0 = (function () {
        let _0x3070e3 = !![];
        return function (_0x194ba9, _0x159d2f) {
            const _0x3a5063 = _0x3070e3 ? function () {
                const _0x2e93a6 = toolfk0_0x1c43;
                if (_0x159d2f) {
                    const _0x91d467 = _0x159d2f[_0x2e93a6(0x16c)](_0x194ba9, arguments);
                    return _0x159d2f = null, _0x91d467;
                }
            } : function () {
            };
            return _0x3070e3 = ![], _0x3a5063;
        };
    }()), _0x56f151 = _0x5b11f0(this, function () {
        const _0x2ceafc = toolfk0_0x1c43, _0x2fd86f = function () {
                const _0x5f1632 = toolfk0_0x1c43;
                let _0x4c448f;
                try {
                    _0x4c448f = Function(_0x5f1632(0x173) + _0x5f1632(0x160) + ');')();
                } catch (_0x1c3a0e) {
                    _0x4c448f = window;
                }
                return _0x4c448f;
            }, _0xd8384a = _0x2fd86f(), _0x31b285 = _0xd8384a['console'] = _0xd8384a[_0x2ceafc(0x170)] || {},
            _0x27c413 = [_0x2ceafc(0x171), 'warn', _0x2ceafc(0x164), _0x2ceafc(0x161), _0x2ceafc(0x16a), _0x2ceafc(0x16f), _0x2ceafc(0x168)];
        for (let _0x12a65e = 0x0; _0x12a65e < _0x27c413['length']; _0x12a65e++) {
            const _0x5cef9a = _0x5b11f0[_0x2ceafc(0x172)][_0x2ceafc(0x16b)][_0x2ceafc(0x179)](_0x5b11f0),
                _0x2fbdbd = _0x27c413[_0x12a65e], _0x59fe04 = _0x31b285[_0x2fbdbd] || _0x5cef9a;
            _0x5cef9a[_0x2ceafc(0x175)] = _0x5b11f0[_0x2ceafc(0x179)](_0x5b11f0), _0x5cef9a['toString'] = _0x59fe04[_0x2ceafc(0x165)]['bind'](_0x59fe04), _0x31b285[_0x2fbdbd] = _0x5cef9a;
        }
    });
    _0x56f151(), String[_0x1f02d2(0x16b)][_0x1f02d2(0x178)] = function () {
        const _0x2e17f1 = _0x1f02d2;
        return this[_0x2e17f1(0x17a)](/[^A|B]/g);
    };
    const _0x27dd80 = _0x1f02d2(0x177)[_0x1f02d2(0x178)]()[_0x1f02d2(0x165)]()['replaceAll'](',', '');
    alert(_0x27dd80), console[_0x1f02d2(0x171)](_0x27dd80);
}()));

function toolfk0_0x1c43(_0x2a16d3, _0xf9ff2d) {
    const _0x218a04 = toolfk0_0x8b25();
    return toolfk0_0x1c43 = function (_0x186891, _0x907f45) {
        _0x186891 = _0x186891 - 0x15e;
        let _0x4c3d84 = _0x218a04[_0x186891];
        return _0x4c3d84;
    }, toolfk0_0x1c43(_0x2a16d3, _0xf9ff2d);
}

function toolfk0_0x8b25() {
    const _0x536949 = ['prototype', 'apply', '3919805CYsnIX', '806680FZZQIG', 'table', 'console', 'log', 'constructor', 'return\x20(function()\x20', '81eoqmUx', '__proto__', '(((.+)+)+)+$', '本工具由\x20wwBw.jsjiami.cAom\x20提供接口。\x0a专注JS安全领域近10年\x0a企业化运营\x0a专业的JS加密研发团队。', 'searchAB', 'bind', 'match', '6QqoubG', '520894jaVcAt', '1203324decTdp', '{}.constructor(\x22return\x20this\x22)(\x20)', 'error', '8902117ZxVmhh', '9468488VMGDVi', 'info', 'toString', '3kdEiZQ', '210466giazBR', 'trace', 'search', 'exception'];
    toolfk0_0x8b25 = function () {
        return _0x536949;
    };
    return toolfk0_0x8b25();
}

0x5.加密后的代码分析

0x20x4的代码对比一下,可以看到加密后的代码体积大出了不少,不知道源码的情况下,基本上很难找出真正有用的代码在哪里。

参数也混淆过,看起来是有一些破解难度的,但是遇到厉害的还是能破解出来。

0x6.开始解密

首先我们尝试将加密后的代码运行一遍,发现可以成功运行,弹出了我们想要的值。各位可以F12调出浏览器开发者工具运行一下试试

为了方便看代码结构,格式化了js加密的代码,结果发现无法运行了,丢到浏览器卡死。思索了一下,估计默认是由反格式化的代码在里边,然后找到了反格式化的地方,修改了正则规则就解开了。

这样,toolfk的js加密混淆,解密就完成了。总结一下,toolfk的加密还是不错的,但是性能开销比较大。

0x7.捷径

如果有小白看不懂的也没关系,其实也可以通过支持在线混淆解密免费的工具jsjiami.com直接一键解密,可以说是js解密最快方式了。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值