有什么工具能把JS代码压缩成下面这样子?又有什么办法可以把压缩成下面这样的代码还原(还原大概的)
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}('A 1b=1W;A 2a=0;A 2R=1;A 2Q=2;A 24=9;A 22=6;A 2S=1W;A 2V=2U;A Y;A V;A 1u=J;A 1K;A 1s,2P;A 1n;A 1k;A Z;A 1q;A P;A 1l;A X,1C;A U,1i;A 1w;A 1E;A 1X=E O(2O,2J,2I,2H,2K,2L,2M,2X,3e,3g,3a,2Z,2Y,2G,38,37,1Z);A 1I=E O(3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,2f,2i,2j,2m,2l,1p,2k,2c,2n,2F,2o,2z,0,0);A 1F=E O(0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,1p,1p);A 1J=E O(1,2,3,4,5,7,9,13,17,25,33,2D,2x,2w,2r,2q,1t,3h,2T,2A,2h,2g,2y,2E,36,2u,2v,2t,2s,2p);A 1L=E O(0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13);A 1G=E O(16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15);S 1O(){D.1N=J;D.1y=J}S 1M(){D.e=0;D.b=0;D.n=0;D.t=J}S 1o(b,n,s,d,e,1a){D.1f=16;D.1V=1z;D.R=0;D.1e=J;D.m=0;{A a;A c=E O(D.1f+1);A 1x;A f;A g;A h;A i;A j;A k;A W=E O(D.1f+1);A p;A Q;A q;A r=E 1M();A u=E O(D.1f);A v=E O(D.1V);A w;A x=E O(D.1f+1);A 1r;A y;A z;A o;A 1g;1g=D.1e=J;F(i=0;i<c.1h;i++)c[i]=0;F(i=0;i<W.1h;i++)W[i]=0;F(i=0;i<u.1h;i++)u[i]=J;F(i=0;i<v.1h;i++)v[i]=0;F(i=0;i<x.1h;i++)x[i]=0;1x=n>1D?b[1D]:D.1f;p=b;Q=0;i=n;1U{c[p[Q]]++;Q++}L(--i>0);B(c[0]==n){D.1e=J;D.m=0;D.R=0;C}F(j=1;j<=D.1f;j++)B(c[j]!=0)1c;k=j;B(1a<j)1a=j;F(i=D.1f;i!=0;i--)B(c[i]!=0)1c;g=i;B(1a>i)1a=i;F(y=1<<j;j<i;j++,y<<=1)B((y-=c[j])<0){D.R=2;D.m=1a;C}B((y-=c[i])<0){D.R=2;D.m=1a;C}c[i]+=y;x[1]=j=0;p=c;Q=1;1r=2;L(--i>0)x[1r++]=(j+=p[Q++]);p=b;Q=0;i=0;1U{B((j=p[Q++])!=0)v[x[j]++]=i}L(++i<n);n=x[g];x[0]=i=0;p=v;Q=0;h=-1;w=W[0]=0;q=J;z=0;F(;k<=g;k++){a=c[k];L(a-->0){L(k>w+W[1+h]){w+=W[1+h];h++;z=(z=g-w)>1a?1a:z;B((f=1<<(j=k-w))>a+1){f-=a+1;1r=k;L(++j<z){B((f<<=1)<=c[++1r])1c;f-=c[1r]}}B(w+j>1x&&w<1x)j=1x-w;z=1<<j;W[1+h]=j;q=E O(z);F(o=0;o<z;o++){q[o]=E 1M()}B(1g==J)1g=D.1e=E 1O();1d 1g=1g.1N=E 1O();1g.1N=J;1g.1y=q;u[h]=q;B(h>0){x[h]=i;r.b=W[h];r.e=16+j;r.t=q;j=(i&((1<<w)-1))>>(w-W[h]);u[h-1][j].e=r.e;u[h-1][j].b=r.b;u[h-1][j].n=r.n;u[h-1][j].t=r.t}}r.b=k-w;B(Q>=n)r.e=1p;1d B(p[Q]<s){r.e=(p[Q]<1D?16:15);r.n=p[Q++]}1d{r.e=e[p[Q]-s];r.n=d[p[Q++]-s]}f=1<<(k-w);F(j=i>>w;j<z;j+=f){q[j].e=r.e;q[j].b=r.b;q[j].n=r.n;q[j].t=r.t}F(j=1<<(k-1);(i&j)!=0;j>>=1)i^=j;i^=j;L((i&((1<<w)-1))!=x[h]){w-=W[h];h--}}}D.m=W[1];D.R=((y!=0&&g!=1)?1:0)}}S 1Y(){B(1w.1h==1E)C-1;C 1w.32(1E++)&39}S K(n){L(1k<n){1n|=1Y()<<1k;1k+=8}}S M(n){C 1n&1X[n]}S H(n){1n>>=n;1k-=n}S 1v(I,N,G){A e;A t;A n;B(G==0)C 0;n=0;F(;;){K(U);t=X.1y[M(U)];e=t.e;L(e>16){B(e==1p)C-1;H(t.b);e-=16;K(e);t=t.t[M(e)];e=t.e}H(t.b);B(e==16){V&=1b-1;I[N+n++]=Y[V++]=t.n;B(n==G)C G;3f}B(e==15)1c;K(e);P=t.n+M(e);H(e);K(1i);t=1C.1y[M(1i)];e=t.e;L(e>16){B(e==1p)C-1;H(t.b);e-=16;K(e);t=t.t[M(e)];e=t.e}H(t.b);K(e);1l=V-t.n-M(e);H(e);L(P>0&&n<G){P--;1l&=1b-1;V&=1b-1;I[N+n++]=Y[V++]=Y[1l++]}B(n==G)C G}Z=-1;C n}S 26(I,N,G){A n;n=1k&7;H(n);K(16);n=M(16);H(16);K(16);B(n!=((~1n)&1Z))C-1;H(16);P=n;n=0;L(P>0&&n<G){P--;V&=1b-1;K(8);I[N+n++]=Y[V++]=M(8);H(8)}B(P==0)Z=-1;C n}S 29(I,N,G){B(1u==J){A i;A l=E O(1z);A h;F(i=0;i<3b;i++)l[i]=8;F(;i<1D;i++)l[i]=9;F(;i<2W;i++)l[i]=7;F(;i<1z;i++)l[i]=8;1s=7;h=E 1o(l,1z,1t,1I,1F,1s);B(h.R!=0){1R("1S 1T: "+h.R);C-1}1u=h.1e;1s=h.m;F(i=0;i<30;i++)l[i]=5;1B=5;h=E 1o(l,30,0,1J,1L,1B);B(h.R>1){1u=J;1R("1S 1T: "+h.R);C-1}1K=h.1e;1B=h.m}X=1u;1C=1K;U=1s;1i=1B;C 1v(I,N,G)}S 28(I,N,G){A i;A j;A l;A n;A t;A 1H;A 1j;A 1m;A T=E O(1Q+30);A h;F(i=0;i<T.1h;i++)T[i]=0;K(5);1j=1t+M(5);H(5);K(5);1m=1+M(5);H(5);K(4);1H=4+M(4);H(4);B(1j>1Q||1m>30)C-1;F(j=0;j<1H;j++){K(3);T[1G[j]]=M(3);H(3)}F(;j<19;j++)T[1G[j]]=0;U=7;h=E 1o(T,19,19,J,J,U);B(h.R!=0)C-1;X=h.1e;U=h.m;n=1j+1m;i=l=0;L(i<n){K(U);t=X.1y[M(U)];j=t.b;H(j);j=t.n;B(j<16)T[i++]=l=j;1d B(j==16){K(2);j=3+M(2);H(2);B(i+j>n)C-1;L(j-->0)T[i++]=l}1d B(j==17){K(3);j=3+M(3);H(3);B(i+j>n)C-1;L(j-->0)T[i++]=0;l=0}1d{K(7);j=11+M(7);H(7);B(i+j>n)C-1;L(j-->0)T[i++]=0;l=0}}U=24;h=E 1o(T,1j,1t,1I,1F,U);B(U==0)h.R=1;B(h.R!=0){B(h.R==1);C-1}X=h.1e;U=h.m;F(i=0;i<1m;i++)T[i]=T[i+1j];1i=22;h=E 1o(T,1m,0,1J,1L,1i);1C=h.1e;1i=h.m;B(1i==0&&1j>1t){C-1}B(h.R==1){}B(h.R!=0)C-1;C 1v(I,N,G)}S 21(){A i;B(Y==J)Y=E O(2*1b);V=0;1n=0;1k=0;Z=-1;1q=2N;P=1l=0;X=J}S 2b(I,N,G){A n,i;n=0;L(n<G){B(1q&&Z==-1)C n;B(P>0){B(Z!=2a){L(P>0&&n<G){P--;1l&=1b-1;V&=1b-1;I[N+n++]=Y[V++]=Y[1l++]}}1d{L(P>0&&n<G){P--;V&=1b-1;K(8);I[N+n++]=Y[V++]=M(8);H(8)}B(P==0)Z=-1}B(n==G)C n}B(Z==-1){B(1q)1c;K(1);B(M(1)!=0)1q=3c;H(1);K(2);Z=M(2);H(2);X=J;P=0}3d(Z){1P 0:i=26(I,N+n,G-n);1c;1P 1:B(X!=J)i=1v(I,N+n,G-n);1d i=29(I,N+n,G-n);1c;1P 2:B(X!=J)i=1v(I,N+n,G-n);1d i=28(I,N+n,G-n);1c;34:i=-1;1c}B(i==-1){B(1q)C 0;C-1}n+=i}C n}S 2e(20){A 1A,I;A i,j;21();1w=20;1E=0;I=E O(2d);1A="";L((i=2b(I,0,I.1h))>0){F(j=0;j<i;j++)1A+=2B.2C(I[j])}1w=J;C 1A}',62,204,'||||||||||||||||||||||||||||||||||||var|if|return|this|new|for|size|zip_DUMPBITS|buff|null|zip_NEEDBITS|while|zip_GETBITS|off|Array|zip_copy_leng|pidx|status|function|ll|zip_bl|zip_wp|lx|zip_tl|zip_slide|zip_method|||||||||||mm|zip_WSIZE|break|else|root|BMAX|tail|length|zip_bd|nl|zip_bit_len|zip_copy_dist|nd|zip_bit_buf|zip_HuftBuild|99|zip_eof|xp|zip_fixed_bl|257|zip_fixed_tl|zip_inflate_codes|zip_inflate_data|el|list|288|out|zip_fixed_bd|zip_td|256|zip_inflate_pos|zip_cplext|zip_border|nb|zip_cplens|zip_cpdist|zip_fixed_td|zip_cpdext|zip_HuftNode|next|zip_HuftList|case|286|alert|HufBuild|error|do|N_MAX|32768|zip_MASK_BITS|zip_GET_BYTE|0xffff|str|zip_inflate_start|zip_dbits||zip_lbits||zip_inflate_stored||zip_inflate_dynamic|zip_inflate_fixed|zip_STORED_BLOCK|zip_inflate_internal|131|1024|zip_depress|43|1537|1025|51|59|115|83|67|163|227|24577|193|129|16385|12289|6145|8193|97|65|2049|258|769|String|fromCharCode|49|3073|195|0x1fff|0x0007|0x0003|0x0001|0x000f|0x001f|0x003f|false|0x0000|fixed_bd|zip_DYN_TREES|zip_STATIC_TREES|zip_INBUFSIZ|513|64|zip_INBUF_EXTRA|280|0x007f|0x0fff|0x07ff|||charCodeAt||default||4097|0x7fff|0x3fff|0xff|0x03ff|144|true|switch|0x00ff|continue|0x01ff|385'.split('|'),0,{}))

解决方案 »

  1.   

    sf<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="utf-8" />
    <meta name="robots" content="all" />
    <link href="http://www.yaohaixiao.com/effects/css/layout.css" type="text/css" rel="stylesheet" media="all" />
    <title>Javascript Packer Decoder</title>
    <style type="text/css">
    <!--
    #PackerDecoder{margin:50px auto;width:960px;overflow:hidden;text-align:center;}
    -->
    </style>
    </head>
    <body>
    <h1>Javascript Packer Decoder</h1>
    <div id="PackerDecoder">
    <textarea id="code" cols="80" rows="20"></textarea><br /> 
    <input type="button" id="encode" value="加密" /> 
    <input type="button" id="runcode" value="执行" /> 
    <input type="button" id="decode" value="解码" /> 
    </div>
    <div id="footer"><p>Copyright &copy; 2008-2009 <a href="http://www.yaohaixiao.com/">yaohaixiao.com</a>, All right reserved.</p></div>
    <script language="javascript" type="text/javascript"> 
    <!--
    (function(){
    var a = 62,  D = document, btnEncode = D.getElementById('encode'), btnRun = D.getElementById('runcode'), btnDecode = D.getElementById('decode');

    function encode(){
    var jsCode = D.getElementById('code').value;
    jsCode = jsCode.replace(/[\r\n]+/g, '');
    jsCode = jsCode.replace(/'/g, "\\'");
    var tmp = jsCode.match(/\b(\w+)\b/g);
    tmp.sort();
    var dict = [];
    var i, t = '';
    for (var i = 0; i < tmp.length; i++) {
    if (tmp[i] != t) {
    dict.push(t = tmp[i]);
    }
    }
    var len = dict.length;
    var ch;
    for (i = 0; i < len; i++) {
    ch = num(i);
    jsCode = jsCode.replace(new RegExp('\\b' + dict[i] + '\\b', 'g'), ch);
    if (ch == dict[i]) 
    dict[i] = '';
    }
    D.getElementById('code').value = "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}(" + "'" + jsCode + "'," + a + "," + len + ",'" + dict.join('|') + "'.split('|'),0,{}))";
    }

    function num(c){
    return (c < a ? '' : num(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36));
    }

    function run(){
    eval(D.getElementById('code').value);
    }

    function decode(){
    var jsCode = D.getElementById('code').value;
    jsCode = jsCode.replace(/^eval/, '');
    D.getElementById('code').value = eval(jsCode);
    }
    btnEncode.onclick = encode;
    btnRun.onclick = run;
    btnDecode.onclick = decode;
    })();
    //-->
    </script> 
    </body>
    </html>
      

  2.   

    http://www.aa25.cn/plus/jsformat.shtml
      

  3.   

                    有三类javascript压缩工具:
                    1,只取出所有多余空白和注释的压缩工具,保留所有有意义的代码
                    2.取出空白注释,而且修改变量名以减小代码的压缩器
                    3。完成以上两种工作,而且最小化代码中所有单词长度,不仅仅是变量名。
                    jsMin 
                    Packer  可以看看。