js混淆工具思路

  • 2020 年 2 月 25 日
  • 筆記

址:http://108.61.183.177:8081/

剛增加了對象混淆,具體效果呢

混淆前:

a={b:{c:{d:{e:{f:"123456789"}}}}}  console.log(a)

混淆後:

運行結果

大家可以分析一下或者自己混淆試試:

!function(J,_,T){J._X_5de920=T;var U=["f","__x05d77139b","a6","__x098a6324","16","__x0629fa33","d9395fe","__x084","","__x0849d3d13c","4a087eee","__x06","b","__x0505e3b10"];a=(_Xd4e1bf={},_Xd4e1bf[_(T,U[1]+U[0],"e0e73")]=(_X17b201={},_X17b201[_(T,U[3]+U[2],"628e0")]=(_X85f09a={},_X85f09a[_(T,U[5]+U[4],"49b24")]=(_Xd9b229={},_Xd9b229[_(T,U[7]+U[6],"89a20")]=(_X1b49a={},_X1b49a[_(T,U[9]+U[8],"174fc")]=_(T,U[11]+U[10],"9fffa"),_X1b49a),_Xd9b229),_X85f09a),_X17b201),_Xd4e1bf),console[_(T,U[13]+U[12],"c0d0f")](a)}(this,function(){return this._X_ae307f=function(J,_){var T,U,w="",A=_.length;for(U=0;U<J.length;U++)T=U%A,w+=String.fromCharCode(J.charCodeAt(U)^_.charCodeAt(T));return w},_X_ae307f(decodeURIComponent(atob(arguments[0][arguments[1]])),arguments[1])},{__x0505e3b10b:"MzAlMUY=",__x05d77139bf:"JTNE",__x098a6324a6:"JTND",__x0629fa3316:"JTNC",__x084d9395fe:"JTNB",__x0849d3d13c:"OQ==",__x064a087eee:"bm1LJTA0JTAzJTAyViUwOCUwMQ=="});

我們可以看到將對象每個屬性都分開混淆結果返回一個對象,這樣可以極大的阻止有人分析我們js明文搜索,看到這段就有人有疑問了,這樣不是很明顯嗎代碼邏輯,但是我們看到了混淆前的,如果換成正常業務代碼,那基本上不好調試看邏輯。我們這樣寫一個混淆工具,後面就可以根據混淆實現混淆還原工具