javascript反混淆之packed混淆(一)


javascript反混淆之packed混淆(一)

什么是JavaScript反混淆,在理解這個概念前我們先來看下什么是代碼混淆,代碼混淆,是將計算機程序的代碼,轉換成一種功能上等價,但是難於閱讀和理解的形式的行為。所以JavaScript反混淆就是為了破解這種難以理解的js代碼的。
混淆有很多種格式目前我接觸最多的就是packed混淆。

什么是packed混淆

我們首先我們來看一段代碼

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;}('0 2=1',3,3,'var||a'.split('|'),0,{}))

是不是很熟悉的啊,對於eval(function(p,a,c,k,e,d)這種格式的function里面的參數組起來是packed的我們稱之為packed壓縮。
但是對於這種壓縮呢,一般都會在瀏覽器運行的時候動態還原出來,但是具體做法怎么做呢?

如何動態解密packed混淆

首先我們創建一個簡單的html頁面,代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <script>
  function myFunction()
{
  document.getElementById('divTest').innerText= 這里填入eval方法里的內容
}
 </script>
</head>

<body>

 <div id="divTest">
請開始你的表演!
 </div>
<button type="button" onclick="myFunction()">點我解密 </button>
</body>
</html>

ok,讓我們拿開頭的那個事例實踐一下。
我們用谷歌瀏覽器打開我們html文件,下面演示一下過程:

就這么簡單,怎么樣學會了嗎,目前我只試了packed混淆,對於其他的混淆應該也差不多。都會在瀏覽器動態解析的時候還原,下篇我們將講一個復雜的例子。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM