这个代码看不懂。JavaScript

唐代de豆腐 发布于 2015/01/18 17:22
阅读 487
收藏 0
eval(
function(p, a, c, k, e, d) {
e = function(c) {
return (c < a ? '' : e(parseInt(c / a)))
+ ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c
.toString(36))
};
if (!''.replace(/^/, String)) {
while (c--) {
d[e(c)] = k[c] || e(c)
}
k = [function(e) {
return d[e]
}];
e = function() {
return '\\w+'
};
c = 1
};
while (c--) {
if (k[c]) {
p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c])
}
}
return p
}(
'C(m(p,a,c,k,e,d){e=m(c){n c.o(B)};r(!\'\'.t(/^/,y)){q(c--){d[c.o(a)]=k[c]||c.o(a)}k=[m(e){n d[e]}];e=m(){n\'\\\\w+\'};c=1};q(c--){r(k[c]){p=p.t(A z(\'\\\\b\'+e(c)+\'\\\\b\',\'g\'),k[c])}}n p}(\'6 4(){a f}3.5.c=4;3.5.d=4;3.5.b=4;6 8(2){9 7=\\\'\\\';2=e(2);h(9 i=2.k;i>0;i--){7+=2.g(i-1,1)}a 7}6 l(2){3.j(8(2))}\',s,s,\'||u|v|D|x|m|F|N|M|n|P|O|R|Q|L|K|E||G|H|J\'.I(\'|\'),0,{}))',
54,
54,
'||||||||||||||||||||||function|return|toString||while|if|22|replace|paperString|document||body|String|RegExp|new|36|eval|disableCopy|for|ret|write|length|split|jsPaperDecode|substr|false|var|paperDecode|onselectstart|oncut|unescape|oncopy'

.split('|'), 0, {}))

原先代码混淆了。

function disableCopy() {
    return false
}
document.body.onselectstart = disableCopy;
document.body.oncopy = disableCopy;
document.body.oncut = disableCopy;


function paperDecode(paperString) {
    var ret = '';
    paperString = unescape(paperString);
    for (var i = paperString.length; i > 0; i--) {
        ret += paperString.substr(i - 1, 1)
    }
    return ret
}
function jsPaperDecode(paperString) {
    document.write(paperDecode(paperString))
}
这是反混淆后的代码。

加载中
0
道在何方
道在何方
坑,混淆了。。。
0
gnefil.nil
gnefil.nil
这种混淆其实是最笨的,直接把eval去掉就得到那段执行的字符串了,还不如普通的压缩
0
唐代de豆腐
唐代de豆腐

引用来自“gnefil.nil”的评论

这种混淆其实是最笨的,直接把eval去掉就得到那段执行的字符串了,还不如普通的压缩
什么个意思?
0
南湖船老大
南湖船老大

你怎么这么笨呢,把eval换成alert不就好了,如果alert出来的结果还有eval,就继续进行替换。

eval是干啥的?eval不就是执行代码的吗?既然上面的代码能执行,就说明eval里面的是一段正常的JS代码,浏览器认识的代码,要不然就没法执行了。既然浏览器认识它,那就输出看看呗。就这么简单的逻辑,so easy.

记住一句话:只要代码能执行,那就必须是浏览器能理解的代码,也必须是正常人能够理解的代码。

0
唐代de豆腐
唐代de豆腐

引用来自“南湖船老大”的评论

你怎么这么笨呢,把eval换成alert不就好了,如果alert出来的结果还有eval,就继续进行替换。

eval是干啥的?eval不就是执行代码的吗?既然上面的代码能执行,就说明eval里面的是一段正常的JS代码,浏览器认识的代码,要不然就没法执行了。既然浏览器认识它,那就输出看看呗。就这么简单的逻辑,so easy.

记住一句话:只要代码能执行,那就必须是浏览器能理解的代码,也必须是正常人能够理解的代码。

受教了 没这么搞过。
返回顶部
顶部