CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  JavaScript

孟子E章等绝顶高手请进,对下面的加密程序给出完整的注释

楼主koolfoo()2003-02-01 12:43:34 在 Web 开发 / JavaScript 提问

var   cc=  
  "oo=0;c   =null;"   +  
  "function   z(a){"+  
  "with(Math){"+  
  "return   floor(random()*a)"+  
  "}"+  
  "};"   +  
   
  "w=String.fromCharCode;"   +  
  "var   g=new   Array();"   +  
  "var   sa=new   Array();"   +  
  "var   ka=new   Array();"   +  
  "var   i=z(3)?39:34;"   +  
  "var   qz=w(i);"   +  
  "var   qq=w(73-i);"   +  
  "var   u='';"   +  
  "var   bz=w(92);"   +  
  "var   d=hs();"   +  
  "var   ez=d+'='+d;"   +  
  "var   pz=d+'+'+d;"   +  
  "var   lz=hs()+'(',rz=')'+hs();"   +  
  "var   jz=hs()+(lf=w(13,10))+(z(4)?hs():w(9));"   +  
  "var   cz=';'+hs()+hs();"   +  
  "var   kz=z(3)?jz:cz+jz;"   +  
  "var   pp=z(3);"   +  
  "var   k;"   +  
  "var   m=68683;"   +  
  "var   vv;"   +  
  "var   dd;"   +  
  "var   az=z(2)?65:97;"   +  
  "var   zb=')]}';"+  
  "var   oz='([{?|^.!&,-/:;<=>@ghijklmnopqrstuwxyzJAMXILOSTFUCHREW'+qz+qq;"   +  
  "var   yy=z(12);"   +  
  "var   yr=z(12);"   +  
  "var   yp=z(20);"   +  
  "var   ps;"   +  
  "var   bb;"   +  
   
  /*在以下几行,变量lf的值为\n,相当于回车*/  
  "bb='Jax363   -   Auto   Modifying   Code   With   Random   Apperance   Jscript   Example'+lf+lf+"   +  
  "'Copyright   (c)   Hamdi   Ucar,   Orchestra   Communication   Systems   Ltd.,2001'+lf+lf+"   +  
  "'Email:   hamdix@verisoft.com.tr'+lf+lf+"   +  
  "'This   program   create   or   rewrite   a   file   named   automodi.js   on   the   current   directory.'+lf;   "   +  
   
  /*   remove   the   below   line   for   quite   operation   */  
   
  /*"WScript.Echo(bb+lf+'Self   Listing:'+lf+lf+cc);"   +*/  
   
  "for(i=0;i<11;i++){"   +  
  "mv(i,g,z(3));"   +  
  "}"   +  
  "alert(az);"+  
  "az^=32;"+  
  "alert(az);"+  
  "ux=g[8];"+  
  "aa=g[10];"   +  
  "if(z(2)){"   +  
  "vv=g[9];"+  
  "}"   +  
   
  "cc=gg('oo='+oo+';cc='+g[0]+';'+g[0]+cc.slice(cc.indexOf('   ='),cc.lastIndexOf('   ')+1),'['+qz+qq+']',qz);"   +  
   
  "if((uv=z(3))>1){"+  
  "dd=u;"   +  
  "while(z(12)){"   +  
  "dd+=oz.charAt(z(55));"   +  
  "}"   +  
  "d=cc.slice(i=cc.indexOf(d=w(125,59),z(3800))+2,k=cc.indexOf(d,i+z(4200-i))+2);"   +  
  "cc=cc.substr(0,i)+zo(d,dd)+cc.substr(k)"+  
  "};"   +  
   
  "cc=fo(cc+sy(z(140)&254)+'*/',i=z(60000)+1,k=z(m));"   +  
   
  "q=Math.floor(m/(p=70+z(30)));"   +  
   
  "d=sw('   5=     2='+(z(3)?m:sw(sw(p,'*',q),'+',m-p*q)),cz,sw('   3='+i,cz,'   7='+k))"   +  
  "+cz"   +  
  "+sw('   1='+sw('   3','+',(9137-i)),cz,'   0='+qz+qz)"   +  
  "+cz"   +  
  "+(z(4)?'for(;--   5;)':'while(--   5)')"   +  
  "+'{   7*=   1;   7%=   2;   4=   7-   3;"   +  
  "if(   4'+sw('>=0','   &&     4','<'+cc.length)+')   0+=     6.charAt   (   4)   }   '+"   +  
  "(uv>1?'   0=     8   (   0);':u)+"+  
  "(vv?vv:'eval')+'(   0)';"   +  
   
  "if(uv){"+  
  "for(dd=u,i=0;i<d.length;i++){"+  
  "dd+=(z(3)&&(c=d.charCodeAt(i))&64)?'%'+c.toString(16):d.charAt(i);"   +  
  "}"   +  
  "d=dd;"   +  
  "};"   +  
   
  "for(i=9;i--;){"   +  
  "d=gg(d,'   '+i,g[i]);"   +  
  "};"   +  
   
  "d=gg(d,';',';'+hs());"   +  
   
  "et=g[6];"   +  
  "tt=m=pk(cc,0,4000/(2+z(yr+3)));"   +  
  "sa[m]=qq+qq;"   +  
  "k=m=pk(d,m+1,2+z(22-yr),1+z(3),uv?0:99);"   +  
   
  "if(z(3-uv)){"   +  
  "p=z(5)+2;"   +  
  "for(i=0;i<m;i+=z(p)){"   +  
  "sa[i]=gg(sa[i],w(c=z(26)+97),bz+c.toString(8));"   +  
  "}"   +  
  "};"   +  
   
  "if(uv){"   +  
  "sa[m++]='unescape';"   +  
  "};"   +  
   
  "dd=g[ev=m]='eval';"   +  
   
  "if(z(2)||vv){"   +  
  "sa[m++]=dd;"   +  
  "};"   +  
   
  "dd=d=u;"   +  
  "for(i=0;i<m;i++){"   +  
  "d+=(i==tt)?u:w(i);"   +  
  "};"   +  
  "while(i=d.length){"   +  
  "dd+=d.charAt(i=z(i));"   +  
  "d=d.substr(0,i)+d.substr(i+1)"   +  
  "};"   +  
   
  "p=z(6)+2;"   +  
  "for(i=0;i<m;i++){"   +  
  "if(pp){"   +  
  "g[dd.charCodeAt(i)]=aa+(pp<2?i+10+yy:'['+i+']');"   +  
  "}else{"   +  
  "mv(i,g,z(p)+1);"   +  
  "}"   +  
  "};"   +  
   
  /*   comment   section,   to   remove   replace   below   line   with   '   "d=jz;"   +   '     */  
   
  "d='/*'+lf+lf+bb+lf+lf+'(Run   '+oo+')'+lf+lf+'*/'+lf+jz;"   +  
   
  "if(pp==2){"   +  
  "d+=(z(4)?'var   ':hs())+aa+ez+(z(3)?hs():jz)+'new   Array()'+kz;"   +  
  "}"   +  
  "pp=0;"   +  
  "p=0;"   +  
  "for(i=0;i<m-1;i++){"   +  
  "if(z(1+yy/80)&&ps!=1){"   +  
  "d+=jz+'{';"   +  
  "p++;"   +  
  "}"   +  
  "if(pp<i){"   +  
  "pp=i;"   +  
  "}"   +  
  "c=sa[q=dd.charCodeAt(i)];"   +  
  "if(q<k){"   +  
  "if(q>0){"   +  
  "if(sa[q-1]==u){"   +  
  "c=fa(q,-1)+pz+c;"   +  
  "}"   +  
  "}"   +  
  "if(q<k-1){"   +  
  "if(sa[q+1]==u){"   +  
  "c+=pz+fa(q,1);"   +  
  "}"   +  
  "}"   +  
  "sa[q]=u;"   +  
  "}"   +  
  "pq(g[q]+ez+c);"   +  
  "if(z(1+p/12)&&ps!=1){"   +  
  "d+='}'+jz;"   +  
  "p--;"   +  
  "}"   +  
  "};"   +  
   
  "if(uv>1){"   +  
  "pq(ux+ez+g[k]);"   +  
  "if(z(2))g[k]=ux;"   +  
  "}"+  
   
  "pq(et+ez+g[ka[tt-1]]+(vv?','+vv+ez+g[ev]:u));"+  
   
  "et=g[ka[tt+1]];"   +  
   
  "while(z(yr)){"   +  
  "ga();"   +  
  "}"   +  
   
  "pq((z(3)?g[4]+ez:u)+g[ev]+(z(3)?hs():jz)+lz+(uv?g[k]+lz+et+rz:et)+rz);"   +  
   
  "while(z(yy)||ps==1){"   +  
  "ga();"   +  
  "}"   +  
   
  "while(p--){"   +  
  "d+=w(125);"   +  
  "}"   +  
   
  /*variable   "d"   contain   the   new   compiled   image     */  
   
  /*   payload   */  
   
  "f=new   ActiveXObject('Scripting.FileSystemObject');"   +  
  "a=f.CreateTextFile('automodi.htm',true);"   +  
  "var   kstr='<script'+'>'+d+'<'+'/script>';"+  
  "a.Write(kstr);"   +  
  "a.Close();"   +  
   
  /*   end   of   payload   */  
   
   
  /**************   execution   ends   here   *****************/  
   
   
  "function   hs(){"   +  
  "return(z(2)?'   ':u)"   +  
  "}"   +  
   
  "function   ha(f){"   +  
  "var   x=z(f&4?26:36);"   +  
  "return   w(x+=x<26?(((f&1)<<5)^az):22)}"   +  
   
  "function   pq(s){"   +  
  "d+=ps?lz+s+rz+(--ps?'==!=+   -   <   >   >=<=||&&'.substr(z(yr+5)&30,2):cz):s+(z(yy)||(ps=z(yp)?0:2)?cz:kz)"   +  
  "};"   +  
   
  "function   mv(n,a,x){"   +  
  "var   v,f,j;"   +  
  "do{"   +  
  "f=0;"+  
  "j=x;"   +  
  "v=ha(4);"+  
  "if(x<3&&az&32){"   +  
  "v+=ha(1);"   +  
  "}else{"   +  
  "while(j--){"   +  
  "v+=ha(z(yy&2));"   +  
  "}"   +  
  "}"   +  
  "for(j=0;j<n;j++){"   +  
  "if(v==a[j]){"   +  
  "f=1;"   +  
  "break;"   +  
  "}"   +  
  "}"   +  
  "}while(f);"   +  
  "return   a[n]=v;"+  
  "};"+  
   
  "function   sw(a,m,b){"+  
  "return(z(2)?a+m+b:b+m+a)"+  
  "};"+  
   
  "function   pk(a,j,x,y,s){"+  
  "var   p=0,q;"   +  
  "for(;p<a.length;j++){"+  
  "q=z((s&&s<p)?y:x);"+  
  "while(a.charAt(p+q++)==bz);"+  
  "sa[ka[j]=j]=qq+gg(a.substr(p,q),bz+bz,bz+bz)+qq;"+  
  "p+=q;"+  
  "}"   +  
  "return   j;"   +  
  "}"   +  
   
  "function   fa(x,q){"   +  
  "var   j=x+q;"+  
  "var   n=ka[j];"+  
  "var   v=g[n];"+  
  "for(j=0;j<=k;j++){"+  
  "if(ka[j]==n){"+  
  "ka[j]=x;"+  
  "}"+  
  "}"+  
  "j=dd.charCodeAt(pp);"   +  
  "if(ka[j]==j&&sa[j]!=u){"+  
  "g[j]=v;"+  
  "if(pp<m){"+  
  "pp++;"+  
  "}"+  
  "}"+  
  "return   v;"   +  
  "};"   +  
   
  "function   fo(s,q,h){"   +  
  "var   x;"+  
  "var   j=0;"+  
  "var   f=s.length;"+  
  "var   c=new   Array(f);"   +  
  "while(j<f){"   +  
  "h=h*9137%m;"   +  
  "x=h-q;"+  
  "if(x<f&&x>=0){"+  
  "c[x]=s.charAt(j++);"+  
  "}"+  
  "}"   +  
  "return   c.join(u);"   +  
  "}"   +  
   
  "function   gg(s,a,x){"+  
  "return   s.replace(eval('/'+a+'/g'),x);"+  
  "}"   +  
   
  "function   gb(){"   +  
  "var   x;"   +  
  "while(et==(x=g[z(tt)]));"   +  
  "return   x"   +  
  "};"   +  
   
  "function   ga(){"   +  
  "var   s=cc.substr(z(3600),z(yp*4)+3);"   +  
  "if(yy&7){"+  
  "s=zo(s,zb);"   +  
  "}"+  
  "pq(gb()+ez+qq+s+qq+(z(3)?pz+gb():u));"   +  
  "}"   +  
   
  "function   sy(b){"   +  
  "var   h=0;"+  
  "var   c;"+  
  "var   s=u;"   +  
  "do{"   +  
  "if(--h<0){"   +  
  "c='()[]{}<>=!&?*,-./|:^'.substr(z(10)*2,2);"   +  
  "h=z(b/8)+1;"   +  
  "}"   +  
  "s+=c;"   +  
  "}while(s.length<b);"   +  
  "return   s;"   +  
  "}"   +  
   
  "function   zo(s,a){"   +  
  "var   i;"+  
  "var   x;"+  
  "var   c;"+  
  "var   h;"+  
  "var   b='()[]{}?|^.';"+  
  "for   (i=a.length;i--;){"   +  
  "for(x=b.indexOf(c=a.charAt(i)),h=x<0?u:bz;c;x=-1){"   +  
  "s=gg(s,h+c,'%'+(c.charCodeAt(0).toString(16)));"   +  
  "c=b.charAt(x^1);"   +  
  "}"   +  
  "}"+  
  "return   s"   +  
  "}"   +  
  ";"+  
   
  "/"+"*   *"+"/"   ;  
   
  eval(cc);  
  问题点数:100、回复次数:33Top

1 楼koolfoo()回复于 2003-02-01 12:47:39 得分 0

说明一下,这个程序可以将自己加密,然后将自己复制为automidi.htm文件。  
  它的主要工作流程是先将自己解密,然后再加密,最后复制自己。  
  且不论它的工作性质是否具有病毒的特性,鄙人认为,它的加密技术值得研究,因为,每次加密后的代码都不相同。  
  大家一同研究,这可能需要一段时间。  
  如果有了结果,请贴出来一起参考。Top

2 楼koolfoo()回复于 2003-02-01 12:48:30 得分 0

上面的代码运行良好,没有出现错误Top

3 楼net_lover(【孟子E章】)回复于 2003-02-01 23:32:20 得分 0

哈哈,不错。有时间研究一下Top

4 楼llrock(百乐宝||昨夜星辰)回复于 2003-02-02 00:36:22 得分 0

做个标记,学习Top

5 楼llrock(百乐宝||昨夜星辰)回复于 2003-02-02 02:45:11 得分 0

看了2   个小时,头昏,注意到每个加密后使用eval(unescape(***))来获得解密程序,我想也应该是通过通过一个偏移量来替换ASCII(他把cc,就是那个字符变量按照规则分成了52个子字符,然后打乱顺序)。解密的程序用unescape了,也就是每词加密后都会有eval(unescape(***)),他应该是在通过规律重新连接被打乱的字符,也就是执行解密函数,而并非真正解密全文,解密函数通过偏移量重新还原,此时全部被解密为搂主铁出来的代码,于是就出现了每次都在加密。Top

6 楼llrock(百乐宝||昨夜星辰)回复于 2003-02-02 03:01:09 得分 0

function   z(a){with(Math){return   floor(random()*a)}};这个函数应该就是产生随机偏移量的函数,然后看到var   i=z(3)?39:34;我想这里就是只有数组和普通变量存放字符串的德原因。因为只有0,1,2。  
  var   m=68683;这个值是替换ASC时候用来控制边界的。  
  猜想大致的加密函数为下列形式:  
  function   encode(str)  
  {  
      for(...;str.length;...)  
    {  
          tmp1==String.fromCharCode(str.charAt(...))  
          if(tmp1>m)tmp1%=m;  
          ....  
      }  
  }  
  解密想法了。  
  不知道我说的对不?我没有看所有的代码,实在看不下去,头痛,所有的变量名和函数名过于简化,头痛,频繁的调用,纯粹的过程语言!他妈的,还不如让我去看CIH源码,不比汇编好多少,请允许我骂人,这不是人干的。  
  js为了能后执行真的很难真正的加密,我不知道能不能彻底的加密,除非从解释器下手,如果能够访问解释器某些接口,否则我觉得不能彻底加密js。  
   
  这种加密方法加密后的代码人就可以很容易的得到源代码,只比原来多了一层eval而已,也就是嵌套加密了。  
  就说这么多了,我想他的思路就是这么多了,希望我的判断是对的,完全根据直觉。  
   
  ===================  
  个人意见,仅供参考  
  Top

7 楼imafool(中正仁和)回复于 2003-02-02 04:18:59 得分 0

markTop

8 楼MeE(巴顿)回复于 2003-02-04 07:14:44 得分 0

既然你看了我就不看了哈   考试又不考这道题Top

9 楼koolfoo()回复于 2003-02-04 10:20:29 得分 0

那么,可不可以这样呢?(加上密码)  
  首先将原文和密码(随机)按一定规则编码,规则可以任意,但必须反映在密码中,  
  然后将原文和密码运算,就得到了一个密文,每次的密文都不一样。  
  在解密时就是上述的逆过程。  
  我想这样加密与解密过程会短得多,也用不了这么多代码。  
  但是怎样将加密与解密过程也隐藏呢?  
   
  关注  
  请继续讨论  
  Top

10 楼koolfoo()回复于 2003-02-04 10:22:42 得分 0

wopgod@163.com  
  我的邮箱。有意结识请留下联系。  
  很愿意和高手相识。Top

11 楼netdust(静时常思己过,闲谈勿论人非)回复于 2003-02-04 20:03:22 得分 0

好dd  
  关注Top

12 楼ccton(插鲜花专用牛粪)回复于 2003-02-07 10:19:43 得分 0

不是PLMM问的,不再关心了Top

13 楼xizi2002(戏子=>影帝)回复于 2003-02-07 10:23:46 得分 0

晕倒Top

14 楼lostnull(lostnull)回复于 2003-02-07 10:45:22 得分 0

upTop

15 楼adamcn(adamcn)回复于 2003-02-07 21:15:52 得分 0

我不知道automodi.htm里的脚本是怎么运行的,里面好像只有赋值语句还有几个"{","}"。Top

16 楼xuzuning(唠叨)回复于 2003-02-08 10:47:47 得分 0

这是一个编码过程,编码的结果可由ie识别执行,很厉害。  
  Top

17 楼nik_Amis(...)回复于 2003-02-08 11:06:14 得分 0

upTop

18 楼koolfoo()回复于 2003-02-10 19:08:51 得分 0

请不要乱发言。如果你不懂,或则提问,或则沉默。  
   
  还有。鄙人这两天写出了个函数,可以将脚本文件中的变量名和函数名全文替换,这样所生成的代码每次都不同,再配以上面的思想,先替换在加密,在使用时先解密,在替换然后在加密,这样就可实现。(已经实现)  
   
  这只是个思想,谁都可以写出加密与解密的函数,鄙人写出的加密解密函数十分简短,不用上面所附程序吗么臃肿,并且在加密的同时可设定密码,当然在解密时也需要密码才能解密。效果甚好。Top

19 楼koolfoo()回复于 2003-02-10 19:14:29 得分 0

相信所生成的代码没人能看懂。或许有点夸张,但肯定在阅读代码时将会用去十倍更多的时间,因为每次生成的名称都不同,在看来全是乱码。  
   
  对上面:   llrock(百乐宝||昨夜星辰)    
  所提出的过程语言不予苟同,它只是将函数名简化以混淆实现而已。  
   
   
  最后,还是请高手们能够对上面的代码给出详细的注释,虽然可能会花一定时间,但这可能会接触某些作者的杰出思想。Top

20 楼koolfoo()回复于 2003-02-10 19:17:28 得分 0

孟子E章:  
  你很让我失望,竟然没有一次回答。或许你只是在使用javascript上相对熟悉而已,并不能称上高手。希望你能回复这句话。  
   
  在此,感谢llrock(百乐宝||昨夜星辰)   对本贴所付出的时间和精力。  
  感谢。Top

21 楼llrock(百乐宝||昨夜星辰)回复于 2003-02-10 19:18:56 得分 0

搞笑Top

22 楼llrock(百乐宝||昨夜星辰)回复于 2003-02-10 19:20:52 得分 0

js加密真的没什么,我有时间就帮你把注释全部都写出来,不过没什么意义,我觉得,js加密的方法基本上没什么,我个人觉得。Top

23 楼adamcn(adamcn)回复于 2003-02-10 20:43:34 得分 0

我也觉得这样的加密没什么意义,只要在最后一行加上很简单的代码,源代码就出来了。Top

24 楼emu(月亮不在手指尖上)回复于 2003-02-10 20:49:25 得分 0

我想孟子不会很稀罕被楼主称为高手。是不是高手并不是由有没有回一个贴,能不能回一个贴来决定的。版主虽然比我们多了一些责任,也并不是就欠了大家的,也并非就每个贴都要回;不管孟子水平如何(就我所之比孟子高的高手未必很多),他在这个论坛里面做出的贡献是有目共睹的。Top

25 楼llrock(百乐宝||昨夜星辰)回复于 2003-02-11 03:40:27 得分 50

注释了一部分,实在看不下去了,不是看不懂而是恶心,原作者的加密方法并不高明,从使用大量随机z()就知道他是个变态,其实用一两个就足可以达到她的目的,可她用了几十个,毫无意义,恶心。  
  她的原理无非是模仿了哈希表的哈西函数,从而建立索引和字符位置之间的关系,function   fo(s,q,h)就是那个伪哈希函数了,  
  你可以看到h=h*9137%m;x=h-q;9137应该是个素数,并且远离2的某一次幂,且足够大,这正是取模构造哈西函数的条件,其他的没什么了。  
  个人认为原作者的代码过于繁琐,效率比较低。  
   
  我去联众打牌去了  
  function   z(a)  
  {//返回一个随机整数  
          with(Math)  
  {  
        return   floor(random()*a)  
  }  
  }  
  //--------------------------------------------------  
   
  function   hs()  
  {//返回一个空格或这u,好象u绝大多数为空  
        return(z(2)?'   ':u)  
  }  
  //--------------------------------------------------  
   
  function   ha(f)  
  {//返回大小些字母和数字,  
    /*  
        当f&4为0,并且x随机后在[26,35]中时,返回数字;  
        否则返回大写或小写字母;  
    */  
        var   x=z(f&4?26:36);        
        return   String.fromCharCode(x+=x<26?(((f&1)<<5)^az):22);  
  }  
  //--------------------------------------------------  
   
  function   pq(s)  
  {  
        d+=ps?lz+s+rz+(--ps?'==!=+   -   <   >>=<=||&&'.substr(z(yr+5)&30,2):cz):s+(z(yy)||(ps=z(yp)?0:2)?cz:kz)  
  }  
  //--------------------------------------------------  
   
  function   mv(n,a,x)  
  {/*   产生一个由字母和数字组成的变量名,并且存贮到a[n]里,  
        注意:a是一个数祖对象的引用,   n为数组索引,x将影响变量名的长度  
    */  
      var   v,f,j;  
      do  
      {  
            f=0;  
    j=x;  
    v=ha(4);//得到一个字母,注意4&4=4  
     
            if(x<3&&az&32)  
            {//此时变量名长度为2  
                  v+=ha(1);//得到一个字母或数字,注意1&4=0  
            }  
            else  
    {//此时变量名长度为x。  
      //****好像有一个bug,当x=0时会出现错误,当z(yy&2)&4=0时有可能出现数字开头的变量名,猜测,我没有仔细看,直觉:)****  
                  while(j--)  
                  {  
                      v+=ha(z(yy&2));  
                  }  
              }  
              for(j=0;j<n;j++)  
              {//遍历a检查是否当前名字已经存在,存在就重新来做,否则f=0结束do   while循环,函数调用结束  
                    if(v==a[j])  
                    {  
                  f=1;  
          break;  
                    }    
              }  
        }  
        while(f);  
        return   a[n]=v;  
  }  
  //--------------------------------------------------  
   
  function   sw(a,m,b)  
  {  
        return(z(2)?a+m+b:b+m+a)  
  }  
  //--------------------------------------------------  
   
  function   pk(a,j,x,y,s)  
  {  
      var   p=0,q;  
      for(;p<a.length;j++)  
      {  
      q=z((s&&s<p)?y:x);  
      while(a.charAt(p+q++)==bz);  
      sa[ka[j]=j]=qq+gg(a.substr(p,q),bz+bz,bz+bz)+qq;  
      p+=q;  
      }  
      return   j;  
  }  
  //--------------------------------------------------  
   
  function   fa(x,q)  
  {  
        var   j=x+q;  
        var   n=ka[j];  
        var   v=g[n];  
        for(j=0;j<=k;j++)  
        {  
              if(ka[j]==n)  
      {  
          ka[j]=x;  
              }  
        }  
        j=dd.charCodeAt(pp);  
        if(ka[j]==j&&sa[j]!=u)  
        {  
        g[j]=v;  
                if(pp<m)  
        {  
              pp++;  
                }  
        }  
        return   v;  
  }  
  //--------------------------------------------------  
  //这里应该就是代码看上去很乱的原因,根据随机的来的h,根据规则打乱cc中字符的顺序  
  function   fo(s,q,h)  
  {//按照一定规则打乱字符串中字符的顺序,并存放到数组中,这个规则和索引、9137、68683,h相关  
      var   x;  
      var   j=0;  
      var   f=s.length;  
      var   c=new   Array(f);  
      while(j<f)  
      {  
          h=h*9137%m;//9137好像是一个足够大的素数,h应该时获得一个相对于68683偏移量  
          x=h-q;//这个应该就是索引和偏移量之间的计算关系了  
          if(x<f&&x>=0)  
          {  
                c[x]=s.charAt(j++);//存贮一个字符,不是顺序存储的,有点像哈西函数效果  
          }  
      }  
      return   c.join(u)//在c尾部加一个u,这个u应该是起结束符作用  
  }  
  //--------------------------------------------------  
  //替换[   ]   为引号  
  function   gg(s,a,x)  
  {  
        return   s.replace(eval('/'+a+'/g'),x);  
  }  
  //--------------------------------------------------  
   
  function   gb()  
  {  
      var   x;  
      while(et==(x=g[z(tt)]));  
      return   x  
  }  
  //--------------------------------------------------  
   
  function   ga()  
  {  
        var   s=cc.substr(z(3600),z(yp*4)+3);  
        if(yy&7)  
        {  
              s=zo(s,zb);  
        }  
        pq(gb()+ez+qq+s+qq+(z(3)?pz+gb():u));  
  }  
  //--------------------------------------------------  
   
  function   sy(b)  
  {  
        var   h=0;  
        var   c;  
        var   s=u;  
        do{  
                if(--h<0)  
        {  
              c='()[]{}<>=!&?*,-./|:^'.substr(z(10)*2,2);  
                      h=z(b/8)+1;  
                }  
        s+=c;  
        }  
        while(s.length<b);  
        return   s;  
  }  
  //--------------------------------------------------  
   
  function   zo(s,a)  
  {  
      var   i;  
      var   x;  
      var   c;  
      var   h;  
      var   b='()[]{}?|^.';  
      for   (i=a.length;i--;)  
      {  
            for(x=b.indexOf(c=a.charAt(i)),h=x<0?u:bz;c;x=-1)  
    {  
          s=gg(s,h+c,'%'+(c.charCodeAt(0).toString(16)));  
                  c=b.charAt(x^1);  
            }  
      }  
      return   s  
  }Top

26 楼llrock(百乐宝||昨夜星辰)回复于 2003-02-11 03:40:46 得分 50

//****************************  
  oo=0;  
  c   =null;  
  //w=String.fromCharCode;//一个替换  
   
  var   g=new   Array();  
  var   sa=new   Array();  
  var   ka=new   Array();  
   
  var   i=z(3)?39:34;//随机决定那个是双引号  
  var   qz=String.fromCharCode(i);//   单引号或双引号  
  var   qq=String.fromCharCode(73-i);//如果qz为单引号则qq为双引号...  
   
  var   u='';  
  var   bz=String.fromCharCode(92);//bz="\";  
   
  //空或者一个空格,作用在于改变cc的长度,利用javascript语法对空格忽略的特点随机改变cc长度  
  var   d=hs();  
  var   ez=d+'='+d;//一个等号字符串  
  var   pz=d+'+'+d;//一个加号字符串  
  var   lz=hs()+'(',rz=')'+hs();//左、右括号字符串  
  //一个换行字符串。String.fromCharCode(13,10))换行,后面的无非是添加制表等javascript语法不识别的字符来改变cc长度  
  var   jz=hs()+(lf=String.fromCharCode(13,10))+(z(4)?hs():String.fromCharCode(9));  
  var   cz=';'+hs()+hs();//分号字符串  
  var   kz=z(3)?jz:cz+jz;//换行字符,或者换行前加个分号;  
   
  var   pp=z(3);//?????????????????????????????????????  
   
  var   k;  
  var   m=68683;  
  var   vv;  
  var   dd;  
  var   az=z(2)?65:97;//ASCII表中,A=65   a=97  
   
  var   zb=')]}';  
  var   oz='([{?|^.!&,-/:;<=>@ghijklmnopqrstuwxyzJAMXILOSTFUCHREW'+qz+qq;  
  var   yy=z(12);  
  var   yr=z(12);  
  var   yp=z(20);  
  var   ps;  
   
  //版权,lf="\n";  
  var   bb;  
  bb='Jax363   -   Auto   Modifying   Code   With   Random   Apperance   Jscript   Example'+lf+lf+'Copyright   (c)   Hamdi   Ucar,   Orchestra   Communication   Systems   Ltd.,2001'+lf+lf+'Email:   hamdix@verisoft.com.tr'+lf+lf+'This   program   create   or   rewrite   a   file   named   automodi.js   on   the   current   directory.'+lf;  
   
  //产生11个长度为2的字符存到数组g中  
  for(i=0;i<11;i++)  
  {  
        mv(i,g,z(3));  
  }  
  //通过异或az在65和97之间切换  
  az^=32;  
  //alert(az);  
   
  //三个重要的变量  
  ux=g[8];  
  aa=g[10];  
  if(z(2)){vv=g[9];}//稍微做些手脚使变量名  
   
   
  //   替换cc中的方括号引号为引号.     注意:原c   =null中的"c"变成了g[0]的值  
  cc=gg('oo='+oo+';cc='+g[0]+';'+g[0]+cc.slice(cc.indexOf('   ='),cc.lastIndexOf('   ')+1),'['+qz+qq+']',qz);  
   
   
  if((uv=z(3))>1)  
  {  
        dd=u;  
        while(z(12))  
        {  
              dd+=oz.charAt(z(55));  
        }  
         
        d=cc.slice(i=cc.indexOf(d=String.fromCharCode(125,59),z(3800))+2,k=cc.indexOf(d,i+z(4200-i))+2);  
        cc=cc.substr(0,i)+zo(d,dd)+cc.substr(k)  
  }  
  //打乱cc中字符的排列顺序  
  cc=fo(cc+sy(z(140)&254)+'*/',i=z(60000)+1,k=z(m));  
  //???  
  q=Math.floor(m/(p=70+z(30)));  
  //这句太长了不想看了,应该是作为解密用的  
  d=sw('   5=     2='+(z(3)?m:sw(sw(p,'*',q),'+',m-p*q)),cz,sw('   3='+i,cz,'   7='+k))+cz+sw('   1='+sw('   3','+',(9137-i)),cz,'   0='+qz+qz)+cz+(z(4)?'for(;--   5;)':'while(--   5)')+'{   7*=   1;   7%=   2;   4=   7-   3;if(   4'+sw('>=0','   &&     4','<'+cc.length)+')   0+=     6.charAt   (   4)   }   '+(uv>1?'   0=     8   (   0);':u)+(vv?vv:'eval')+'(   0)';  
   
  if(uv)  
  {  
      for(dd=u,i=0;i<d.length;i++)  
      {  
            dd+=(z(3)&&(c=d.charCodeAt(i))&64)?'%'+c.toString(16):d.charAt(i);  
      }  
      d=dd;  
  }  
   
  for(i=9;i--;)  
  {  
      d=gg(d,'   '+i,g[i]);  
  }  
   
  d=gg(d,';',';'+hs());  
  et=g[6];  
  tt=m=pk(cc,0,4000/(2+z(yr+3)));  
  sa[m]=qq+qq;  
  k=m=pk(d,m+1,2+z(22-yr),1+z(3),uv?0:99);  
   
  if(z(3-uv))  
  {  
        p=z(5)+2;  
        for(i=0;i<m;i+=z(p))  
        {  
              sa[i]=gg(sa[i],String.fromCharCode(c=z(26)+97),bz+c.toString(8));  
        }  
  }  
   
  if(uv)  
  {  
      sa[m++]='unescape';  
  }  
   
  dd=g[ev=m]='eval';  
  if(z(2)||vv)  
  {  
        sa[m++]=dd;  
  }  
  dd=d=u;  
   
  for(i=0;i<m;i++)  
  {  
      d+=(i==tt)?u:String.fromCharCode(i);  
  }  
   
  while(i=d.length)  
  {  
        dd+=d.charAt(i=z(i));  
        d=d.substr(0,i)+d.substr(i+1)};  
        p=z(6)+2;  
        for(i=0;i<m;i++)  
        {  
              if(pp)  
      {  
            g[dd.charCodeAt(i)]=aa+(pp<2?i+10+yy:'['+i+']');  
              }  
      else  
      {  
          mv(i,g,z(p)+1);  
              }  
          }  
          d='/*'+lf+lf+bb+lf+lf+'(Run   '+oo+')'+lf+lf+'*/'+lf+jz;  
          if(pp==2){d+=(z(4)?'var   ':hs())+aa+ez+(z(3)?hs():jz)+'new   Array()'+kz;  
  }  
   
  pp=0;  
  p=0;  
   
  for(i=0;i<m-1;i++)  
  {  
      if(z(1+yy/80)&&ps!=1)  
      {  
            d+=jz+'{';  
            p++;  
      }  
      if(pp<i)  
      {  
            pp=i;  
      }  
      c=sa[q=dd.charCodeAt(i)];  
      if(q<k)  
      {  
            if(q>0)  
    {  
          if(sa[q-1]==u)  
  {  
        c=fa(q,-1)+pz+c;  
                  }  
      }  
      if(q<k-1)  
      {  
            if(sa[q+1]==u)  
    {  
          c+=pz+fa(q,1);  
                    }  
        }  
        sa[q]=u;  
          }  
  pq(g[q]+ez+c);  
          if(z(1+p/12)&&ps!=1)  
  {  
        d+='}'+jz;  
                p--;  
          }  
  }  
   
  if(uv>1)  
  {  
      pq(ux+ez+g[k]);  
      if(z(2))g[k]=ux;  
  }  
  pq(et+ez+g[ka[tt-1]]+(vv?','+vv+ez+g[ev]:u));  
  et=g[ka[tt+1]];  
  while(z(yr))  
  {  
      ga();  
  }  
   
  pq((z(3)?g[4]+ez:u)+g[ev]+(z(3)?hs():jz)+lz+(uv?g[k]+lz+et+rz:et)+rz);  
   
  while(z(yy)||ps==1)  
  {  
      ga();  
  }  
  while(p--)  
  {  
      d+=String.fromCharCode(125);  
  }Top

27 楼llrock(百乐宝||昨夜星辰)回复于 2003-02-11 03:43:25 得分 0

f=new   ActiveXObject('Scripting.FileSystemObject');  
  a=f.CreateTextFile('automodi.htm',true);  
  var   kstr='<script'+'>'+d+'<'+'/script>';  
  a.Write(kstr);  
  a.Close();  
   
  /*  
  这些事cc中的代码,不能直接执行,你可以把cc="...";考到代码中就可以执行了。  
  孟子绝对是个高手,她只是因为时间罢了,向我这样的闲人不多,正在等待考试成绩,闲呀,打牌去:)  
  */Top

28 楼oldsky(九指神丐)回复于 2003-02-11 09:07:18 得分 0

mark   it!Top

29 楼koolfoo()回复于 2003-02-11 18:19:52 得分 0

感谢:llrock(百乐宝||昨夜星辰)    
   
  可以留下mail地址?希望能结识你。  
  可惜我平时上网的时间不多,没有你那么多的时间。  
   
  或许,在我评论孟子的话真的是过激了,在此向孟子道歉:对不起!我也很希望能结识你。Top

30 楼koolfoo()回复于 2003-02-11 18:23:24 得分 0

现在,我对自己的话真的感到后悔了。因为这违背某些原则,必要的原则。  
   
  自责!  
  同一个错误不允许犯第二次!  
   
  最后,技术万岁!友谊万岁!Top

31 楼koolfoo()回复于 2003-02-11 18:34:28 得分 0

真想结贴,因为这样又不可以和各位对话了。  
  一个人的日子的很寂寞。  
  哎.........  
   
  本是春江寂寞时  
  轻歌乱舞语一字  
  不堪夜夜风雨急  
  去到天涯更相思  
   
  哎.........Top

32 楼wuziqi_puyue(蒲月)回复于 2003-02-11 18:42:53 得分 0

用不着自责,这是你的感受。  
  也许你是我的高手,而人家又是你的高手,没有止境的。  
  学无止境啊Top

33 楼koolfoo()回复于 2003-02-11 21:44:24 得分 0

谢谢。挑战无限!  
  路就在前方,希望在转角........Top

相关问题

  • TO :孟子E章
  • 孟子E章进
  • 孟子E章请进
  • 孟子E章来领分
  • 孟子E章请进!
  • To net_lover(孟子E章)...给20
  • to 高手(如net_lover(孟子E章))
  • net_lover(孟子E章)请进
  • net_lover(孟子E章) 来来来!!!!!!!!!
  • 请net_lover(孟子E章)来拿分,

关键词

  • 加密
  • 函数
  • 代码
  • 解密
  • 字符
  • 密码
  • 孟子
  • lf
  • cz
  • ez

得分解答快速导航

  • 帖主:koolfoo
  • llrock
  • llrock

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo