javascript又一解密过程,推荐的,会这个基本上好多都能解决了第2/2页
程序员文章站
2023-11-21 11:10:58
javascript又一解密过程,推荐的,会这个基本上好多都能解决了[常规准备] 1、首先尝试掌握代码的大体结构。 这需要一定的经验。首先是做hutia已经做了的事情(虽然...
javascript又一解密过程,推荐的,会这个基本上好多都能解决了
[常规准备]
1、首先尝试掌握代码的大体结构。
这需要一定的经验。首先是做hutia已经做了的事情(虽然这一步在这个具体的情况下也可以跳过,但是不推荐如此),先把编码的文字显形。有很多办法可选,有一种办法是把编码的字符串写到textarea里。
于是就得到了如下代码:
window["eval"](function(j1,j2,o$dtaj3,la4,tpmmvdvtz5,aoul$vsk$6){tpmmvdvtz5=function(o$dtaj3){return(o$dtaj335?window["string"]["fromcharcode"](o$dtaj3+29):o$dtaj3["tostring"](36))};if(!''["replace"](/^/,window["string"])){while(o$dtaj3--)aoul$vsk$6[tpmmvdvtz5(o$dtaj3)]=la4[o$dtaj3]||tpmmvdvtz5(o$dtaj3);la4=[function(tpmmvdvtz5){return aoul$vsk$6[tpmmvdvtz5]}];tpmmvdvtz5=function(){return'\w+'};o$dtaj3=1;};while(o$dtaj3--)if(la4[o$dtaj3])j1=j1["replace"](new window["regexp"]('\b'+tpmmvdvtz5(o$dtaj3)+'\b','g'),la4[o$dtaj3]);return j1;}('3r(2x(p,a,c,k,e,d){e=2x(c){2y(c35?34.3p(c+29):c.3q(36))};2z(!\'\'.30(/^/,34)){33(c--)d[e(c)]=k[c]||e(c);k=[2x(e){2y d[e]}];e=2x(){2y\'\\w+\'};c=1};33(c--)2z(k[c])p=p.30(31 3v(\'\\b\'+e(c)+\'\\b\',\'g\'),k[c]);2y p}(\'o j=h q("p.1j");o w=" !\\"#$%&\\'()*+,-./1i:;?@1h";o w=w+"[\\\\]^1k`1n{|}~";o n="1m";n v(i){h="";t(j=0;j>(j*8+4))&z)+n.k((i>>(j*8))&z)}p h}j.v("1l=f:/1c/1b/1a/1d/#1g.1f;1e=;1o={1y 1x 1w (*.1z)};");o 18="26 * 25 m 24 1r=1 l 1=1 l 1g=1g l \\'m\\'=\\'m\\'";n e(x,y){p((x&r)+(y&r))^(x&u)^(y&u)}o z=h q("p.1q");z.v(18,j);n l(a,b,c,d,x,s,t){q=e(e(a,(b&c)|(~b&d)),e(x,t));p e((q>(u-s))&(g.f(2,s)-1)),b)}n g(a,b,c,d,x,s,t){q=e(e(a,(b&d)|(c&~d)),e(x,t));p e((q>(u-s))&(g.f(2,s)-1)),b)}n m(a,b,c,d,x,s,t){q=e(e(a,b^c^d),e(x,t));p e((q>(u-s))&(g.f(2,s)-1)),b)}n k(a,b,c,d,x,s,t){q=e(e(a,c^(b|~d)),e(x,t));p e((q>(u-s))&(g.f(2,s)-1)),b)}n 1p(){w(i(y.o("1s").1f)==z.1b(2)&&i(y.o("1v").1f)==z.1b(1)){1u("1t")}}n i(r){s=(((r.e+8)>>6)+1)4;o>;i+=16){19=a;1e=b;1d=c;1c=d;a=l(a,b,c,d,x[i+0],7,1p);d=l(d,a,b,c,x[i+1],12,1o);c=l(c,d,a,b,x[i+2],17,1s);b=l(b,c,d,a,x[i+3],22,1w);a=l(a,b,c,d,x[i+4],7,1x);d=l(d,a,b,c,x[i+5],12,1y);c=l(c,d,a,b,x[i+6],17,1u);b=l(b,c,d,a,x[i+7],22,1v);a=l(a,b,c,d,x[i+8],7,1l);d=l(d,a,b,c,x[i+9],12,1j);c=l(c,d,a,b,x[i+10],17,1h);b=l(b,c,d,a,x[i+11],22,1i);a=l(a,b,c,d,x[i+12],7,2d);d=l(d,a,b,c,x[i+13],12,2f);c=l(c,d,a,b,x[i+14],17,2k);b=l(b,c,d,a,x[i+15],22,2i);a=g(a,b,c,d,x[i+1],5,2h);d=g(d,a,b,c,x[i+6],9,2g);c=g(c,d,a,b,x[i+11],14,2j);b=g(b,c,d,a,x[i+0],20,2m);a=g(a,b,c,d,x[i+5],5,2l);d=g(d,a,b,c,x[i+10],9,2b);c=g(c,d,a,b,x[i+15],14,2a);b=g(b,c,d,a,x[i+4],20,2z);a=g(a,b,c,d,x[i+9],5,2c);d=g(d,a,b,c,x[i+14],9,2e);c=g(c,d,a,b,x[i+3],14,2w);b=g(b,c,d,a,x[i+8],20,2v);a=g(a,b,c,d,x[i+13],5,2p);d=g(d,a,b,c,x[i+2],9,2q);c=g(c,d,a,b,x[i+7],14,2n);b=g(b,c,d,a,x[i+12],20,2o);a=m(a,b,c,d,x[i+5],4,2t);d=m(d,a,b,c,x[i+8],11,2u);c=m(c,d,a,b,x[i+11],16,2r);b=m(b,c,d,a,x[i+14],23,2s);a=m(a,b,c,d,x[i+1],4,2g);d=m(d,a,b,c,x[i+4],11,2f);c=m(c,d,a,b,x[i+7],16,2e);b=m(b,c,d,a,x[i+10],23,2h);a=m(a,b,c,d,x[i+13],4,2k);d=m(d,a,b,c,x[i+0],11,2j);c=m(c,d,a,b,x[i+3],16,2i);b=m(b,c,d,a,x[i+6],23,29);a=m(a,b,c,d,x[i+9],4,28);d=m(d,a,b,c,x[i+12],11,27);c=m(c,d,a,b,x[i+15],16,2a);b=m(b,c,d,a,x[i+2],23,2d);a=k(a,b,c,d,x[i+0],6,2c);d=k(d,a,b,c,x[i+7],10,2b);c=k(c,d,a,b,x[i+14],15,2u);b=k(b,c,d,a,x[i+5],21,2t);a=k(a,b,c,d,x[i+12],6,2s);d=k(d,a,b,c,x[i+3],10,2v);c=k(c,d,a,b,x[i+10],15,2y);b=k(b,c,d,a,x[i+1],21,2x);a=k(a,b,c,d,x[i+8],6,2w);d=k(d,a,b,c,x[i+15],10,2n);c=k(c,d,a,b,x[i+6],15,2m);b=k(b,c,d,a,x[i+13],21,2l);a=k(a,b,c,d,x[i+4],6,2o);d=k(d,a,b,c,x[i+11],10,2r);c=k(c,d,a,b,x[i+2],15,2q);b=k(b,c,d,a,x[i+9],21,2p);a=e(a,19);b=e(b,1e);c=e(c,1d);d=e(d,1c)}p>)|((q>)|((q>)|((q>)|((q>=3;j++){h+=n.k((i>=>?"":e(3s(c> ?"":tpmmvdvtz5(window["parseint"](o$dtaj3>
[ctrl+a 全选 注:引入外部js需再刷新一下页面才能执行]
window["eval"]("xxx") 其实就是 window.eval("xxx")的另一种写法。
我们要关心的是作为eval()方法的参数的代码的结构。
把这些代码稍微整理一下(可用带语法高亮的编辑器,也可通过批量替换字符进行代码的格式化,使成对的{}、''和""显得突出),这样就能够看出代码的大致结构如下。
function(j1,j2,picknick,la4,oddver,outputver)
{
oddver=function(picknick)
{
return(picknick<j2?"":oddver(parseint(picknick/j2)))+((picknick=picknick%j2)>35?string.fromcharcode(picknick+29):picknick.tostring(36))
}
if(true)
{
while(picknick--)outputver[oddver(picknick)]=la4[picknick]||oddver(picknick);
la4=[function(oddver){return outputver[oddver]}];
oddver=function()
{
return '\w+'
}
picknick=1
}
while(picknick--)if(la4[picknick])j1=j1.replace(new regexp('\b'+oddver(picknick)+'\b','g'),la4[picknick]);
return j1
}(……)
那么整个代码的结构就相当于这个样子:
<script>eval(function(a,b,c){alert(a);alert(b);alert(c)}(1,2,3))</script>
[常规准备]
1、首先尝试掌握代码的大体结构。
这需要一定的经验。首先是做hutia已经做了的事情(虽然这一步在这个具体的情况下也可以跳过,但是不推荐如此),先把编码的文字显形。有很多办法可选,有一种办法是把编码的字符串写到textarea里。
于是就得到了如下代码:
[ctrl+a 全选 注:引入外部js需再刷新一下页面才能执行]
window["eval"]("xxx") 其实就是 window.eval("xxx")的另一种写法。
我们要关心的是作为eval()方法的参数的代码的结构。
把这些代码稍微整理一下(可用带语法高亮的编辑器,也可通过批量替换字符进行代码的格式化,使成对的{}、''和""显得突出),这样就能够看出代码的大致结构如下。
复制代码 代码如下:
function(j1,j2,picknick,la4,oddver,outputver)
{
oddver=function(picknick)
{
return(picknick<j2?"":oddver(parseint(picknick/j2)))+((picknick=picknick%j2)>35?string.fromcharcode(picknick+29):picknick.tostring(36))
}
if(true)
{
while(picknick--)outputver[oddver(picknick)]=la4[picknick]||oddver(picknick);
la4=[function(oddver){return outputver[oddver]}];
oddver=function()
{
return '\w+'
}
picknick=1
}
while(picknick--)if(la4[picknick])j1=j1.replace(new regexp('\b'+oddver(picknick)+'\b','g'),la4[picknick]);
return j1
}(……)
那么整个代码的结构就相当于这个样子:
复制代码 代码如下:
<script>eval(function(a,b,c){alert(a);alert(b);alert(c)}(1,2,3))</script>