js混淆代碼還原-js反混淆:利用js進行賦值實現


js混淆代碼還原-js反混淆:利用js進行賦值實現

【不想用工具的直接看方法二】

 本文地址:http://www.cnblogs.com/vnii/archive/2011/12/14/2287504.html

方法一:利用IE開發人員工具(IE8開始已經自帶,IE7以前需要下載安裝IE Developer Toolbar)進行反混淆,本人常用Chrome,但是沒有找到利用Chrome自帶的開發人員工具去實現反混淆的方法。。。希望哪位園友知道告知。。。

不羅嗦,直接上圖

 

 

方法二:代碼實現(ps.好吧,作為部分開發人員的普遍幽怨,很多開發者最希望的還是使用自己開發的東西,恨不得OS都是自己折騰的,本人自己實現的時候就是先實現了方法二,再去用了一下IE。。。-_-||| )

 

先貼一個混淆后的測試代碼

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;}('1("0-6");2 4(){1("0-5")}8 3=2(){1("0-7")};4();3()',9,9,'憂郁的匹格|alert|function|b|a|反混淆測試2|反混淆測試1|反混淆測試3|var'.split('|'),0,{}))

 

開始實施:

1.新建一個網頁xxx.html

2.加入一個div容器 id="divTest"

3.最關鍵的一步--賦值執行:(在上面混淆的代碼中,將eval()中的內容提取出來賦值(或直接打印)給document.getElementById('divTest').innerText )

document.getElementById('divTest').innerText=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;}('1("0-6");2 4(){1("0-5")}8 3=2(){1("0-7")};4();3()',9,9,'憂郁的匹格|alert|function|b|a|反混淆測試2|反混淆測試1|反混淆測試3|var'.split('|'),0,{})

 

打開xxx.html 顯示結果:(反混淆后的代碼已經被壓縮了,去掉了換行等字符)

alert("憂郁的匹格-反混淆測試1");function a(){alert("憂郁的匹格-反混淆測試2")}var b=function(){alert("憂郁的匹格-反混淆測試3")};a();b()

 

經過本人測試發現使用packed這個混淆過的js都可以使用這個方法還原,找了幾個項目里面混淆過的js都可以還原,只是去掉了換行符,不知道其它方法混淆的js可不可以用,理論上應該可以吧,本人未測試,有興趣的朋友可以試一下


免責聲明!

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



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