1. 程式人生 > >在分析前端js中,Eval加密解密、js混淆概念及其破解

在分析前端js中,Eval加密解密、js混淆概念及其破解

前端雖然開源, 但是由於前端程式碼量很多,也有一些特殊的保護程式碼的方法,其中Eval、js混淆是常用的方式,但是在大的網際網路產品上用得很少,因為前端加密(RSA、AES、MD5等)是為了保證資料傳輸中的安全性,而非要讓人難以模仿資料傳輸請求。

而前端中的js混淆、eval對於專業的人來說形同虛設,所以也沒必要做混淆和eval,並且對於程式碼維護是及其不利的,所以在接觸的百度、騰訊、京東的一些產品上沒遇到過上面兩種問題。

js中的eval()方法就是一個js語言的執行器,它能把其中的引數按照JavaScript語法進行解析並執行,簡單來說就是把原本的js程式碼變成了eval的引數,變成引數後代碼就成了字串,其中的一些字元就會被按照特定格式“編碼”,像下面:

var showmsg="貼上要加密/解密的javascript程式碼到這裡";
if(1==1){
  alert(showmsg);
}

eval加密:

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}('5 4="貼上要加密/解密的3程式碼到這裡";2(0==0){  
1(4);}'
,62,6,'1|alert|if|javascript|showmsg|var'.split('|'),0,{}))

變成了一串不知道什麼意思的字串,但是其中的一些關鍵詞還是可以看清楚的。

應對這種js程式碼的方法也很簡單,有很多線上提供eval解密的功能,可以直接複製程式碼解密

在這裡插入圖片描述

或者直接在瀏覽器除錯模式下使用開發者工具的控制檯,複製執行包含eval()的程式碼

在這裡插入圖片描述

對於js混淆很好理解就是,把其中的變數、方法位置順序打亂,但是又用一些無關的變數或者方法來保證執行順序,這種js混淆的也很好處理,複製完整的混淆程式碼去js混淆還原網站還原。

在這裡插入圖片描述


ID:Python之戰

|作|者|公(zhong)號:python之戰

專注Python,專注於網路爬蟲、RPA的學習-踐行-總結

喜歡研究和分享技術瓶頸,歡迎關注

獨學而無友,則孤陋而寡聞!