JSfuck原理解析二——官方例子分析

官方例子分析

  上一篇我們已經解釋了jsfuck的基本原理,簡單來說,如果我們想要用jsfuck加密一段可執行代碼,那麼代碼最後應該是這樣的類型:

Function(code)()

  在上一篇中我們提到,Function()()這一段可以轉換成如下代碼:

[]["filter"]["constructor"]( )() 

  那麼,我們就得到了一段完全由“ ()+[]! ”與字符串組合的代碼,接下來我們只需要把字符串也加密成“ ()+[]! ”就可以了!

  所需要加密的字符串,包含了所有可顯示字符在此,我們依然拿“ alert(1) ”來舉例:

  字符串“ alert(1) ”可拆解爲a、l、e、r、t、(、1、),八個字符,這些字符我們很容易在上一篇文章中找到:

1 => +!+[]

false => ![]  

true => !![]

  由上可得:

'a' == 'false'[1] == (false + '')[1] == (![]+[])[+!+[]]

'l' == 'false'[2] ==  (false + '')[2] == (![]+[])[!+[]+!+[]]

'e' == 'true'[0] == (true + '')[3] == (!![]+[])[!+[]+!+[]+!+[]]

'r' == 'true'[0] == (true + '')[1] == (!![]+[])[+!+[]]

't' == 'true'[0] == (true + '')[0] == (!![]+[])[+[]]

  則:'alert' == (![]+[])[+!+[]] + (![]+[])[!+[]+!+[]] + (!![]+[])[!+[]+!+[]+!+[]] + (!![]+[])[+!+[]] + (!![]+[])[+[]]

  那麼我們如何得到括號字符呢?首先我們要找到包含括號的字符串--方法,方法的基本樣式就是function name (){ code }這樣我們只需要把它轉換成字符串,按照上面的方法實現一遍就行了。jsfuck官方給出的方法是:

([][[]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[!+[]+!+[]+[!+[]+!+[]]]

  拆分可得:

(undefined + []['fill'])['22'] == "undefinedfunction fill() { [native code] }"['22']

  這裏只是用了數組的fill方法,和方法本身沒有關係,換成find沒有影響,一樣可以得到括號。即:

(undefined + []['find'])['22'] == "undefinedfunction find() { [native code] }"['22']

    既然得到了左括號,那麼右括號只需要把數字22改成23就可以得到,即:

([+[]]+![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[!+[]+!+[]+[+[]]]

  把以上加密後的代碼組合(部分代碼記得加上括號),我們便得到了:

(![]+[])[+!+[]] + (![]+[])[!+[]+!+[]] + (!![]+[])[!+[]+!+[]+!+[]] + (!![]+[])[+!+[]] + (!![]+[])[+[]]+([][[]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[!+[]+!+[]+[!+[]+!+[]]]+(+!+[])+([+[]]+![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[!+[]+!+[]+[+[]]] == 'alert(1)'

  到目前爲止,字符串我們已經拿到了,接下來只需要按照上面的方法,拿到Function就行了,最終組合成:

[]["filter"]["constructor"]('alert(1)')() == Function('alert(1)')()

  這樣一個完美的jsfuck加密代碼已經完成了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章