|
纯手工解密几大在线js加密网站(1)
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[&#39;push&#39;](_0x37146e[&#39;shift&#39;]());}catch(_0x53e7e6){_0x37146e[&#39;push&#39;](_0x37146e[&#39;shift&#39;]());}}}(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)](&#39;(((.+)+)+)+$&#39;);});_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)+&#39;);&#39;)();}catch(_0x1c3a0e){_0x4c448f=window;}return _0x4c448f;},_0xd8384a=_0x2fd86f(),_0x31b285=_0xd8384a[&#39;console&#39;]=_0xd8384a[_0x2ceafc(0x170)]||{},_0x27c413=[_0x2ceafc(0x171),&#39;warn&#39;,_0x2ceafc(0x164),_0x2ceafc(0x161),_0x2ceafc(0x16a),_0x2ceafc(0x16f),_0x2ceafc(0x168)];for(let _0x12a65e=0x0;_0x12a65e<_0x27c413[&#39;length&#39;];_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[&#39;toString&#39;]=_0x59fe04[_0x2ceafc(0x165)][&#39;bind&#39;](_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)]()[&#39;replaceAll&#39;](&#39;,&#39;,&#39;&#39;);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=[&#39;prototype&#39;,&#39;apply&#39;,&#39;3919805CYsnIX&#39;,&#39;806680FZZQIG&#39;,&#39;table&#39;,&#39;console&#39;,&#39;log&#39;,&#39;constructor&#39;,&#39;return\x20(function()\x20&#39;,&#39;81eoqmUx&#39;,&#39;__proto__&#39;,&#39;(((.+)+)+)+$&#39;,&#39;本工具由\x20wwBw.jsjiami.cAom\x20提供接口。\x0a专注JS安全领域近10年\x0a企业化运营\x0a专业的JS加密研发团队。&#39;,&#39;searchAB&#39;,&#39;bind&#39;,&#39;match&#39;,&#39;6QqoubG&#39;,&#39;520894jaVcAt&#39;,&#39;1203324decTdp&#39;,&#39;{}.constructor(\x22return\x20this\x22)(\x20)&#39;,&#39;error&#39;,&#39;8902117ZxVmhh&#39;,&#39;9468488VMGDVi&#39;,&#39;info&#39;,&#39;toString&#39;,&#39;3kdEiZQ&#39;,&#39;210466giazBR&#39;,&#39;trace&#39;,&#39;search&#39;,&#39;exception&#39;];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[&#39;push&#39;](_0x37146e[&#39;shift&#39;]());
} catch (_0x53e7e6) {
_0x37146e[&#39;push&#39;](_0x37146e[&#39;shift&#39;]());
}
}
}(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)](&#39;(((.+)+)+)+$&#39;);
});
_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) + &#39;);&#39;)();
} catch (_0x1c3a0e) {
_0x4c448f = window;
}
return _0x4c448f;
}, _0xd8384a = _0x2fd86f(), _0x31b285 = _0xd8384a[&#39;console&#39;] = _0xd8384a[_0x2ceafc(0x170)] || {},
_0x27c413 = [_0x2ceafc(0x171), &#39;warn&#39;, _0x2ceafc(0x164), _0x2ceafc(0x161), _0x2ceafc(0x16a), _0x2ceafc(0x16f), _0x2ceafc(0x168)];
for (let _0x12a65e = 0x0; _0x12a65e < _0x27c413[&#39;length&#39;]; _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[&#39;toString&#39;] = _0x59fe04[_0x2ceafc(0x165)][&#39;bind&#39;](_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)]()[&#39;replaceAll&#39;](&#39;,&#39;, &#39;&#39;);
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 = [&#39;prototype&#39;, &#39;apply&#39;, &#39;3919805CYsnIX&#39;, &#39;806680FZZQIG&#39;, &#39;table&#39;, &#39;console&#39;, &#39;log&#39;, &#39;constructor&#39;, &#39;return\x20(function()\x20&#39;, &#39;81eoqmUx&#39;, &#39;__proto__&#39;, &#39;(((.+)+)+)+$&#39;, &#39;本工具由\x20wwBw.jsjiami.cAom\x20提供接口。\x0a专注JS安全领域近10年\x0a企业化运营\x0a专业的JS加密研发团队。&#39;, &#39;searchAB&#39;, &#39;bind&#39;, &#39;match&#39;, &#39;6QqoubG&#39;, &#39;520894jaVcAt&#39;, &#39;1203324decTdp&#39;, &#39;{}.constructor(\x22return\x20this\x22)(\x20)&#39;, &#39;error&#39;, &#39;8902117ZxVmhh&#39;, &#39;9468488VMGDVi&#39;, &#39;info&#39;, &#39;toString&#39;, &#39;3kdEiZQ&#39;, &#39;210466giazBR&#39;, &#39;trace&#39;, &#39;search&#39;, &#39;exception&#39;];
toolfk0_0x8b25 = function () {
return _0x536949;
};
return toolfk0_0x8b25();
}
0x5.加密后的代码分析
将0x2和0x4的代码对比一下,可以看到加密后的代码体积大出了不少,不知道源码的情况下,基本上很难找出真正有用的代码在哪里。
参数也混淆过,看起来是有一些破解难度的,但是遇到厉害的还是能破解出来。
0x6.开始解密
首先我们尝试将加密后的代码运行一遍,发现可以成功运行,弹出了我们想要的值。各位可以F12调出浏览器开发者工具运行一下试试
为了方便看代码结构,格式化了js加密的代码,结果发现无法运行了,丢到浏览器卡死。思索了一下,估计默认是由反格式化的代码在里边,然后找到了反格式化的地方,修改了正则规则就解开了。
这样,toolfk的js加密混淆,解密就完成了。总结一下,toolfk的加密还是不错的,但是性能开销比较大。
0x7.捷径
如果有小白看不懂的也没关系,其实也可以通过支持在线混淆解密免费的工具jsjiami.com直接一键解密,可以说是js解密最快方式了。

js安全|js加密|js解密|jsjiemi.v6

js安全|js加密|js解密|jsjiemi.v6

js安全|js加密|js解密|jsjiemi.v6 |
|