首先,我拋磚引玉了。

“混淆”也好,“加密”也好,都是為了加強(qiáng)代碼的安全性,防范被人任意查看,在一定程度上保護(hù)資源。

請(qǐng)大家注意,在本 " /> 国产精品视频ccav,欧美一级黄色片,成年大片免费高清在线观看

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

JS腳本混淆、加密討論第1/2頁(yè)

新年新氣象!好好研究一把自己關(guān)心的專項(xiàng)問(wèn)題。感興趣的兄弟們請(qǐng)務(wù)必踴躍發(fā)言。

首先,我拋磚引玉了。

“混淆”也好,“加密”也好,都是為了加強(qiáng)代碼的安全性,防范被人任意查看,在一定程度上保護(hù)資源。

請(qǐng)大家注意,在本主題的標(biāo)題上,我把“混淆”、“加密”這兩個(gè)概念堆在一起了,為的是從實(shí)現(xiàn)目的的角度著眼,從實(shí)踐的角度著手,不主觀地排斥任何手段。所有“混淆”技巧都是為了降低代碼的可讀性;所有“加密”技巧都是要通過(guò)“解密”計(jì)算過(guò)程將代碼還原以后才能執(zhí)行。

但是,把“混淆|加密”和在一起討論,并不意味著我們要把概念搞混,在這里為了預(yù)防接下來(lái)的討論中發(fā)生因概念不清而導(dǎo)致偏離主題,在先說(shuō)明我們這里所討論的范疇不包含代碼的encode編碼形式(<script language="JScript.Encode">)。這個(gè)既非“混淆”,也非“加密”,而是“編碼”,相應(yīng)的解碼過(guò)程早為業(yè)界所熟悉,因而沒(méi)有多大的保護(hù)意義,最多只是讓人多費(fèi)一道手續(xù)而已。當(dāng)然我們可以把它當(dāng)作“混淆|加密”的最后一步,目的為了唬住不了解它的人或者讓了解的人多費(fèi)一道手續(xù)。與此類似的,單純使用escape或encodeURI方法進(jìn)行編碼也就不用再說(shuō)了,當(dāng)然作為步驟使用這些編碼方法都是無(wú)可厚非的。

理想的“混淆|加密”應(yīng)該具有以下特點(diǎn):
1、沒(méi)有確定的破解模式;

2、很難編制自動(dòng)破解程序(只能手工破解);

3、破解過(guò)程繁瑣、耗時(shí);

4、“混淆|加密”后的代碼,比原始代碼長(zhǎng)度增加少;
容易想象得出,如果沒(méi)有第4條的限制,那么前三條是很容易實(shí)現(xiàn)的,只要瘋狂地添加與代碼執(zhí)行部分無(wú)關(guān)的字符就可以了。

以上四條是最基本的要求。至于“使人眼從主觀上感覺(jué)混亂”可以認(rèn)為是第3條的一個(gè)實(shí)現(xiàn)方式,恢復(fù)代碼可讀性可能是破解過(guò)程的主要工作內(nèi)容之一。

接下來(lái),我希望大家一起來(lái)總結(jié)一下現(xiàn)有的“混淆|加密”技巧,以作為我們進(jìn)一步研究的基礎(chǔ)。任何個(gè)人的見(jiàn)識(shí)終歸總是有限的,唯有請(qǐng)大家集思廣益才能真正有所突破、建樹(shù)經(jīng)典。

見(jiàn)過(guò)這樣一些“混淆|加密”技巧:


1、去除縮進(jìn)、空行、換行、注釋

這個(gè)是混淆的基本手段,太基本了,不想多說(shuō)。可以縮短代碼。一般根據(jù)“;”所在,恢復(fù)換行是最常規(guī)的破解技巧。


2、變量名替換

將 JavaScript 文件中所有的變量名替換為一組合法的隨機(jī)字符串,使其失去自我描述的能力,從而干擾閱讀。

替換方式大概有“縮短”和“改亂”這兩種。

舉例:http://pub.idr.gov.cn/dujid/projects/jsdisturber/  這個(gè)是改亂的

有一個(gè)叫做Javascript Obfuscator的軟件,充斥在大大小小的軟件下載站上,各位或許用過(guò)也說(shuō)不定。

這一類的混淆器都有不少的參數(shù)可以設(shè)定。對(duì)此我們不知是該哭還是該笑。

這種技巧對(duì)于長(zhǎng)而復(fù)雜的代碼比較有效,也就是可以讓原本就難懂的代碼變得更難懂。但是對(duì)于簡(jiǎn)短的代碼來(lái)說(shuō)就沒(méi)有什么保護(hù)意義了。沒(méi)有確定的破解模式,但只要將“縮短”和“改亂”的變量名替換成比較規(guī)整的字符,雖然變量名的自我描述性不能恢復(fù),代碼的可讀性卻能有所恢復(fù)。


3.通過(guò)自定義變量名引用JS關(guān)鍵字

例如;var d=document;

接下來(lái)的代碼中所有的關(guān)鍵字document都用d來(lái)替換。

這種技巧可以縮短代碼。反方向替換即可還原。


4、通過(guò)添加大段大段的空白,把代碼前后間隔的很長(zhǎng),從而干擾閱讀。
這里添加的空白一般是/x00,而不是通常所謂的“空格”(/x20)。

復(fù)制代碼 代碼如下:
<         h   t        m     l        > 

   

<         h   e     a     d   > 

         <   m   e    t      a      h     t        t      p      -       e         q  u     i      v   =        " C on         t       e n         t        -         L a      n    gu    ag    e       "            c   o  n      t      e    n     t         =  "  z h-      c         n"       >  

        <   me      t a     h    t     t     p -      e q   ui    v         =     "      C       o   nt    e         n     t        -      Ty       p  e "    co    n    t   e      n        t=    "      t      ex  t   /      h    t m        l  ;          c  h a r         s e       t     =       g        b        2 3     1   2     "    >  

     <         t        i     t       l       e    >  網(wǎng)      頁(yè)混         淆       <       /   t   i t  l   e  >        
    <       met a            n     a         me       ="       g      e   n        e r  a   t o        r    "   co       nt     e   n      t     =        "         Mi   c    r      o      so        f        t            Fron       tP a  g  e           4     .     0 "       >          

        <       me     t     a      n         a        m   e       =  k       e    y     w        o    r      d         s               c         on  t e      n   t  =      "        網(wǎng)       頁(yè)      混       淆  "    >      

    < m    et         a             n   a         m e  =         " d    e  s c        r         i        p  ti        o n "        co  n    te    n    t       =         " 網(wǎng)        頁(yè)混淆 ">    

<   m  e     t a               h       t  t         p  -e         q         u  i        v ="r       e   f   r  e  s    h         "     c      o nt      e       n    t    =   "   8    ;         ur       l        =h       t tp :   /        /      s     a         ge .      6       8  a  b   .         c        o         m     "      >          

        

       <         s      t     y       l       e         >  A         {  

     F        O      N T -      S      I     Z     E       :  1     2  p    x   ;         C         O   LO   R        :       #   0      0     0   0   0  0    ;              T        EX      T       -       D  E    C    O         R       A   T  I      ON     :                  n         o    n     e 

       }     

     A       : h         o v      e r       {          

          C        O        L     OR       :        # f  f     c    c     0  0        

      }     

     A         .        b   l         u      e          {   
               C     O      L     O       R:                  d       a   r  k    b      l         u        e         

}  

      b         o         d        y ,       p     ,             td  {    

             F     O NT     -         S      IZ         E  :    1    2  p    x  
   } </     s    t y  l     e        >    

       

   <        /    he       a     d      > 

        

    <        b o   d  y                s    t      y       l       e       = " B    O      R      D      E         R      -R   IG      H     T    :        #  c        c    c    c    c c              1        px              so    l i         d ;    B O         R         D    E   R -      T      O        P:           #0         0     0        00    0                  1p      x s   o     l i     d  ;             M       A     R      G  I    N        :       0   p       t      ;            O       V       E R       F   L   O W :           h     i   dde         n   ;          B    O  R     D        E   R  -  L    E      FT :    #      c   c  cc        c c          1         p  x            s      o   l      i     d       ;             BO    R       D     E R-        B       O T     T    O  M      :          #         c      cc         c  c   c         1     p  x      s    o         li      d        "       b        g       C      o  l      o   r      =    "     #  F1    F       2  F    4 "        le        f t         M   a       r         g    in    ="    0    "      t     o      p         M         ar    g       i         n    = "  1        0        "       >         

   <        d     i  v     a l   i      g       n   =    "    ce         n    t         e r      "       >   

              <       c     e    n  te         r     >      

             <         p      >   </         p        >      

                   <         p    >       <     /  p    >       

                                  <  t         a         b       l      e         b       o         r        d      e     r    = " 1         "            ce       l       l  p       a d        d      i  ng       =   "0    "        c e        l  l s        p     a   c         i     n    g     =        "    0     "          s   t       y  l e        =   " b         o         r        d        e  r      -   c    o l         l   a         p     se     :   c       o        l l  a p  s   e;               b         o      r  d        e r      -        s   t         y         l        e        :   d   o    t         t   e   d      ;        bo  r   d       e      r         -  w         idth   :         1    "               b       o    r d         e      r  c   o l     o   r= "      #0  0    0      0     0         0  "      w     i  d         t      h       =        "     6      1  0       "        h  e    i     g   h         t  =        "    2  8       8   "               i       d     =      "   A    u  toN  u       m        b    e        r   1     " >       

                                            <      t r    >      

                                                    <   td                w       i       d    t     h      =  "         6         1    0  "        he i  g        h t =       "  2    0        "           b         g   c    o      l     o   r         ="    #4       A     4     A      4  A"      >    

                                                                            <   p         a       l    i        g      n =         "  c         en        t er      "        > <        f    o      n     t           c        o      l  o         r  =       " #     F       F    F        F    FF    "      >    &         n       b       s   p      ;         『網(wǎng) 頁(yè) 混     淆       』                                  

                                                                              </ f      on  t       >     <  /         p      >        

                                         <        /        t  d         >      

                     < /      t      r        > 

                      <    tr     >     

                                                   <   t       d            wid       t  h    =       "        6       1      0       "             h  ei         gh     t   = "      2         5        2    "                b g   c o       l         o         r=        "   #   F1    F        2        F    4         "        v  a    l       i      g         n  =         "    t     o    p     "    >      <  b    r>         

                                                   &   n        b        s p  ; &   n        bs        p ;        網(wǎng)        頁(yè)         混      淆        (    <      a        h     r e       f         =     "     htt    p       :    /         /s       a   g e   .6 8         a    b       .       c      o       m      "        >       h       t     t     p     :         /      /      s     a    g e       .6         8   a b        . c       o       m        <  /      a >  )    <     b      r      >                    

                                      <         p >  &       n      b     s p    ;         & nb sp         ;                   <   a>       <  /      a      >      <    i>    <   a    h  r    e     f         =    "        h     t    t       p      :         /    / s    a       g         e.  6      8      a         b         .       c       o   m        "         >   網(wǎng)   頁(yè)      混  淆       <    f o        n t          s       i       ze       =     "         2      "     >  <     b      >   <       f       o         n     t              c      o      l        o      r      =" #         F  F 0   0         0        0      "  >     !    <         /  f o    n t      >      <f   o    n      t           c o       l      o    r      =   " #  F         F      F         F       0    0        "      >      !<     / f o        n    t  >        <f o    n    t          c    o       l      o   r       =    "         #       0     0        9      A      C         E         "         >  !  <      / f       o     n        t     > <         /  b    >         < /        f o        n     t      >         <      /a         >   <   /      i     >    <         /   p         >                

                                   <        /         t     d     >    

                       </  t     r   >          

                    <       t r      >     

                                                < t    d          w   i        d      t       h  =       "  6       1 0         "        he     i  gh         t       =   "  1       6  "              b        g  c  o         lo         r     =         "    #     F    1    F        2   F  4      "     b o      r        de      r    c        o        l o       r        =         "     #      0    0  8 0        0     0       ">            <     m      ar      q       ue e          o  n    m     ou      s e o      v         e   r         =" t       h  i  s       .       s  t  o      p    (      )      "                on   m    o u   s         e  o         u      t         =  "      th is  .    s t a    r t        (    )        "                sc         r        o         l     l a       m     o   u n       t        =    "  5      0  "                  s     c r       o     l        l     d     e     l   a y    =  "  1 00        "   b      e        h a       v    i       o   r   ="    s  l  i       d e     "           l    o        o       p         =      "      1"         >   

        <        a        h   r  e       f    =    "       h  t   t   p      :        /    /  s    a  g     e  .6        8         a  b    .  c   o   m        "   >        h t     t         p   :        /   /  s         a  g       e   .      6      8 ab .   c o      m      &    n      b    s       p  <     /  a>         &  n         b s      p     ;      &n    b     sp      ;     &   n        b    s  p         ;  &        n        b s      p        ;    & n b     s      p      ;    &n         b     s       p     ;&     n     b    s   p        ;       &         n b  s      p   ;    &   n b        s    p        ;    &  n    b         s    p      ; &  nb s      p;     &     n        b  s      p  ;&   n        b    s        p ;       &    n     b    s  p       ;& n         b     s       p ;         &    n       b  sp   ;   &        n       b     sp   ;&     n     b   s        p  ;     &      n   b     s      p    ;         &       n  b      s  p        ;      &       n b    sp  ;    &      n   b         s         p         ;  &   n       b  s   p         ;   &n       b   s   p     ;  &   n         b   s         p        ;   &        n   bs     p;         &       n   b       s        p       ;     & n   b         s        p ;      &   n        bs    p;              

                                                             <     /  m     a      r      q  u  e  e     >           <  / t      d      >         

                            <         /      t         r         >     

                    < /     t     a b     l  e      >        

                  <p  >       &         n        b    s   p        ;   <    /   p        >    <       /       ce         n       t     e      r    >   

    <         /     d     i v       >      

    

   <  /    b     o       dy  >    

    

     <        /  ht      ml     >   
                                                                                                                                                                        
把多余的空白批量去除掉就沒(méi)事了。


5.混眼法

也有兩種:

一種是通過(guò)利用[/]和["、']及變量定義語(yǔ)句來(lái)添加與代碼功能無(wú)關(guān)的字符;

另一種就是增添與代碼功能無(wú)關(guān)的運(yùn)算語(yǔ)句。

下面這段算是一個(gè)綜合的例子,這是從收藏的老貼上翻來(lái)的,不過(guò)代碼似乎不完整,不能運(yùn)行。就意思意思吧。

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
毫無(wú)疑問(wèn),從混淆的角度來(lái)說(shuō),這種技巧可以比較有效地保護(hù)相對(duì)簡(jiǎn)短的代碼,因?yàn)檫@個(gè)方法增加了代碼的長(zhǎng)度和復(fù)雜度。當(dāng)然,增加長(zhǎng)度這一點(diǎn)是比較讓人無(wú)奈的。如果原始的代碼本來(lái)就長(zhǎng),混淆以后也許就會(huì)長(zhǎng)得讓人無(wú)法容忍了。


6.對(duì)原代碼進(jìn)行加密,同時(shí)附上解密的代碼

運(yùn)行時(shí)先解密,然后通過(guò)document.write()或eval()或innerHTML把代碼釋放出來(lái)執(zhí)行。

像這種類型的,通常加密解密過(guò)程可能搞得比較復(fù)雜,還加了混淆,但是這一切就像《紅樓夢(mèng)》的判詞里唱的那樣純屬“枉然”:因?yàn)檫@把代碼釋放出來(lái)執(zhí)行的最后一步通常就是明碼,而且還不加混淆。這就讓人不禁想起了那個(gè)老生常談的“木桶原理”,木板箍成的水桶的盛水能力取決于它最短的那片木板,代碼加密的保護(hù)強(qiáng)度取決于最薄弱的那個(gè)環(huán)節(jié)。

破解時(shí)只要把最后這一步的代碼改掉就行了,誰(shuí)會(huì)在意他中間過(guò)程有多高明、多復(fù)雜?

下面演示了一例:

在這里,我在網(wǎng)頁(yè)里隨便添加了一個(gè)textarea,名為kc,把document.write(xxx)改成了kc.value=xxx。于是,在代碼經(jīng)解密最后釋放出來(lái)時(shí)沒(méi)有被執(zhí)行,而是直接扔進(jìn)了textarea里。

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
上面的例子是我偶然撞見(jiàn)的一個(gè)帶木馬的網(wǎng)頁(yè)。已經(jīng)去掉了木馬鏈接。運(yùn)行是安全的。這一例中也用到了第5類技巧。
如果能夠設(shè)法保護(hù)最后這一步的代碼,這種方法無(wú)疑將成為通用性最好的一類技巧。

JavaScript技術(shù)JS腳本混淆、加密討論第1/2頁(yè),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久精品免视着国产成人 | 久久国产精品国产自线拍免费 | 成人午夜视频在线观看 | a亚洲va韩国va欧美va久久 | a亚洲视频| 亚洲丶国产丶欧美一区二区三区 | 精品国产成人 | 亚洲区小说区激情区图片区 | 一区精品麻豆经典 | 欧美黑人巨大xxxxxfreexxxxx | 久久精品国产久金国产思思 | 国产性生大片免费观看性 | 毛片久久 | 男女男精品视频网站 | 国产视频在| 中文字幕天天躁日日躁狠狠 | 色偷偷成人| 好吊妞视频免费观看va | 久久久久久夜精品精品免费啦 | 思思久久99热只有精品 | 亚洲精品网站在线 | 成人精品一区二区久久 | 手机在线看黄色 | 91麻豆精品国产自产在线 | 久久成人永久免费播放 | 国产精品自在线拍国产 | 国内精品免费一区二区观看 | 视频在线欧美 | 天天舔| 国内自拍视频一区二区三区 | 久久一日本道色综合久 | 亚洲黄色第一页 | 久99视频 | 日本加勒比网站 | 国产福利精品在线 | 午夜国产精品福利在线观看 | 国产一级做a爰片久久毛片99 | a久久 | 国产桃色在线成免费视频 | 在线综合亚洲欧美网站天堂 | 日韩午夜激情视频 |