1. 程式人生 > 其它 >js指令碼混淆&加密(轉載)

js指令碼混淆&加密(轉載)

線上JS 混淆&加密 工具

https://ztf.net.cn/tools/jsformat.html

概念介紹

“混淆”也好,“加密”也好,都是為了加強程式碼的安全性,防範被人任意檢視,在一定程度上保護資源。

混淆:為了降低程式碼的可讀性

加密:都是要通過“解密”計算過程將程式碼還原以後才能執行。

編碼:單純使用escape或encodeURI方法進行編碼,或(<script language="JScript.Encode">),目的為了唬住不瞭解它的人或者讓瞭解的人多費一道手續。



理想的“混淆|加密”應該具有以下特點:

1、沒有確定的破解模式;

2、很難編制自動破解程式(只能手工破解);

3、破解過程繁瑣、耗時;

4、“混淆|加密”後的程式碼,比原始程式碼長度增加少;

容易想象得出,如果沒有第4條的限制,那麼前三條是很容易實現的,只要瘋狂地新增與程式碼執行部分無關的字元就可以了。

以上四條是最基本的要求。至於“使人眼從主觀上感覺混亂”可以認為是第3條的一個實現方式,恢復程式碼可讀性可能是破解過程的主要工作內容之一。


 

1、去除縮排、空行、換行、註釋


這個是混淆的基本手段,太基本了,不想多說。可以縮短程式碼。一般根據“;”所在,恢復換行是最常規的破解技巧。

2、變數名替換


將 JavaScript 檔案中所有的變數名替換為一組合法的隨機字串,使其失去自我描述的能力,從而干擾閱讀。
特點:這種技巧對於長而複雜的程式碼比較有效,也就是可以讓原本就難懂的程式碼變得更難懂。但是對於簡短的程式碼來說就沒有什麼保護意義了。沒有確定的破解模式,但只要將“縮短”和“改亂”的變數名替換成比較規整的字元,雖然變數名的自我描述性不能恢復,程式碼的可讀性卻能有所恢復。

3.通過自定義變數名引用JS關鍵字


例如;var d=document;

接下來的程式碼中所有的關鍵字document都用d來替換。

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

4、通過新增大段大段的空白,把程式碼前後間隔的很長,從而干擾閱讀。

這裡新增的空白一般是\x00,而不是通常所謂的“空格”(\x20)。
<         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 > 網 頁混 淆 < / 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 = " 網 頁 混 淆 " > < m et a n a m e = " d e s c r i p ti o n " co n te n t = " 網 頁混淆 "> < 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 ; 『網 頁 混 淆 』 </ 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 ; 網 頁 混 淆 ( < 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 " > 網 頁 混 淆 < 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 >
把多餘的空白批量去除掉就沒事了。

5.混眼法


也有兩種:

一種是通過利用[\]和["、']及變數定義語句來新增與程式碼功能無關的字元;

另一種就是增添與程式碼功能無關的運算語句。


摘自http://bbs.blueidea.com/viewthread.php?tid=2440360&page=      作者:bound0