JS代码混淆了,怎么反混淆回去?

JavaScript015

JS代码混淆了,怎么反混淆回去?,第1张

这不是混淆,只是使用16进制表示的ASCII码~

单独提取出字符串,在后面加上.toString()进行调试即可看到原本字符串。

你的这句转码后如下:

window["document"]["write"]('<sc')

相当于:window.document.write('<sc')

很有可能是输出一个script标签的代码段的开始。

vue压缩后的js可以反编译出来,反编译方法为:

1、在桌面找到自己下载的浏览器软件,点击浏览器图标。

2、在浏览器中随便找个网址登入。

3、在网页上右键鼠标,弹出右键菜单中选择“审查元素”选项(或按F12),弹出开发工具弹框,在弹框中选择“Sources”选项。如下图所示。

4、在左侧网络文件列表中随便找个js文件(如:mt_show_1.8.js文件),点击该文件并查看文件内容。发现文件一行展示证明被压缩过了。

5、找到该文件内容左下角的“{}”标签,找到后并点击该标签。

6、随后左侧会生成一个格式化后的文件(如:mt_show_1.8.js:formatted文件),查看js文件内容,内容展示成正常的格式了。现在就可以读懂里面的代码了。

当你在浏览网页时,看到一个很漂亮的特效,你查看源代码时看到的是一队乱码,那多扫兴呀!根据本人的研究,总结出了三种解密方法,与大家分享!!

方法一:

有一种加密的办法是采用javascript的escape()函数,把某些符号、汉字等变成乱码,以达到迷惑人的目的。解密这种代码的办法是采用其反函数加以还原。下面是一个经过加密的例子:

<HTML>

<SCRIPT LANGUAGE="Javascript">

var Words ="%3Chtml%3E%3Cbody%20bgcolor%3D%22red%22%3E%3Cp%3E%u8FD9%u662F%u4F8B%u5B50%uFF01%uFF01%uFF1A%uFF09%3C/p%3E%3C/body%3E%3C/html%3E"

var NewWords

NewWords = unescape(Words)

document.write(NewWords)

</SCRIPT>

<BODY>

</BODY>

</HTML>

这种文件最好解密,一看就明白,关键是unescape()函数起了还原源代码的作用。要想看到加密前的代码是什么样子,可以用下面的办法:

<HTML><SCRIPT LANGUAGE="Javascript">

var Words ="%3Chtml%3E%3Cbody%20bgcolor%3D%22red%22%3E%3Cp%3E%u8FD9%u662F%u4F8B%u5B50%uFF01%uFF01%uFF1A%uFF09%3C/p%3E%3C/body%3E%3C/html%3E"

var NewWords

NewWords = unescape(Words)

NewWords=NewWords.toString()

function password(){

document.pw.txtpw.value=NewWords

}

</SCRIPT>

<BODY>

<form name=pw>

<input type=button onclick="password()" value="解密">

<br>

<textarea name="txtpw" cols="100" rows="100"></textarea>

</form>

</BODY>

</HTML>

方法二:

有一个软件叫HTMLEncrypt.exe,它就是把源代码进行加密的软件,这个软件的加密的原理是把字符转换。下面的例子是一个分帧的页面:

<html><head><script>

function Carbosoft( s ) { var sRet="" for(j=0 j< s.length j++ ){ var n= s.charCodeAt(j) if (n>=8364) {n = 128} sRet += String.fromCharCode( n - 3 ) } return( sRet ) }

var sJsCmds ="" +

"?kwpoA?khdgA?phwd#kwws0htxly@%Frqwhqw0W|sh%#frqwhqw@%wh{w2kwpo>#fkduvhw@lvr08<04%A?wlwohAZHOFRPH?2wlwohA?phwd#qdph@%JHQHUDWRU%#frqwhqw@%Plfurvriw#IurqwSdjh#613%A?phwd#qdph@%Plfurvriw#Wkhph%#frqwhqw@%qrqh/#ghidxow%A?phwd#qdph@%Plfurvriw#Erughu%#frqwhqw@%qrqh/#ghidxow%A?2khdgA?iudphvhw#erughu@%3%#iudpherughu@%3%#urzv@%-/93%A##?iudph#qdph@%pdlq%#vuf@%xs1kwp%#vfuroolqj@%dxwr%A##?iudph#qdph@%rqolqh%#vuf@%grzq1kwp%#vfuroolqj@%qr%#qruhvl}h#wdujhw@%beodqn%A##?qriudphvA##?erg|A##?sAWklv#sdjh#xvhv#iudphv/#exw#|rxu#eurzvhu#grhvq*w#vxssruw#wkhp1#?2sA##?2erg|A##?2qriudphvA?2iudphvhwA?2kwpoA?irqw#froru@%&33333%A?s#doljq@%fhqwhu%A?vpdooA?irqw#idfh@%Wdkrpd%AWklv#iloh#zdv#hqfu|swhg#xvlqj#dq#xquhjlvwhuhg#yhuvlrq#ri#?d#kuhi@%kwws=22fduer{1wkhgqv1qhw2kwpohqfu|sw1kwp%AKWPO#Hqfu|sw#y413?2dA1?2irqwA?2vpdooA?2sA" +

""

var s= Carbosoft( sJsCmds)

document.write (s)

</script>

</head><body></body></html>

从上面可以看出,浏览器解释这写代码前,进行了还原,从而可以得到破解的方法如下:

<script>

function Carbosoft( s ) { var sRet="" for(j=0 j< s.length j++ ){ var n= s.charCodeAt(j) if (n>=8364) {n = 128} sRet += String.fromCharCode( n - 3 ) } return( sRet ) }

var sJsCmds ="" +

"?kwpoA?khdgA?phwd#kwws0htxly@%Frqwhqw0W|sh%#frqwhqw@%wh{w2kwpo>#fkduvhw@lvr08<04%A?wlwohAZHOFRPH?2wlwohA?phwd#qdph@%JHQHUDWRU%#frqwhqw@%Plfurvriw#IurqwSdjh#613%A?phwd#qdph@%Plfurvriw#Wkhph%#frqwhqw@%qrqh/#ghidxow%A?phwd#qdph@%Plfurvriw#Erughu%#frqwhqw@%qrqh/#ghidxow%A?2khdgA?iudphvhw#erughu@%3%#iudpherughu@%3%#urzv@%-/93%A##?iudph#qdph@%pdlq%#vuf@%xs1kwp%#vfuroolqj@%dxwr%A##?iudph#qdph@%rqolqh%#vuf@%grzq1kwp%#vfuroolqj@%qr%#qruhvl}h#wdujhw@%beodqn%A##?qriudphvA##?erg|A##?sAWklv#sdjh#xvhv#iudphv/#exw#|rxu#eurzvhu#grhvq*w#vxssruw#wkhp1#?2sA##?2erg|A##?2qriudphvA?2iudphvhwA?2kwpoA?irqw#froru@%&33333%A?s#doljq@%fhqwhu%A?vpdooA?irqw#idfh@%Wdkrpd%AWklv#iloh#zdv#hqfu|swhg#xvlqj#dq#xquhjlvwhuhg#yhuvlrq#ri#?d#kuhi@%kwws=22fduer{1wkhgqv1qhw2kwpohqfu|sw1kwp%AKWPO#Hqfu|sw#y413?2dA1?2irqwA?2vpdooA?2sA" +

""

var s= Carbosoft( sJsCmds)

</script>

<form name=qq>

<textarea name=ww cols=100 rows=10></textarea>

<input onclick='ww.value=s' type=button value="解密">

</form>

方法三:

有一种加密方法是每行单独加密,还原起来比较复杂。看一个加密过的原文:

<HTML>

<BODY>

<SCRIPT LANGUAGE="JavaScript">

function Decode() {

d("FrfmnD")d("FruyvDFgwhqjfWnyeseysuEXpydy%whqjf~J~XWghwEXfkjJpgXDFIgwhqjfD")d("FmufyWrffjKuieqdEX?klfulfK$ajuXWwklfulfEXfubfIrfmnGWwryhgufEsx}{~}XD")d("FfqfnuDejFIfqfnuD")d("FIruyvD")d("FxkvaD")d("FIxkvaD")d("FIrfmnD")d("W")return 0}

</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">

function d (enc) {document.write(codeIt(key,enc))}

var key = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!\"\ \|#$%&\'()*+,-.\/:<=>?@[\\]^_\t\`{}~\n"function codeIt (mC, eS) {var wTG, mcH = mC.length / 2, nS = "", dvfor (var x = 0 x < eS.length x++) { wTG = mC.indexOf(eS.charAt(x))if (wTG > mcH) {dv = wTG - mcH nS = nS + mC.charAt(48 - dv)}else {dv = mcH - wTGnS = nS + mC.charAt(48 + dv)}}return nS}

</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">

Decode()

</SCRIPT>

</BODY>

</HTML>

还原的时候,也必须每行单独解密,用下面的方法可以看到源代码:

<HTML>

<BODY>

<SCRIPT LANGUAGE="JavaScript">

function Decode() {

d("FrfmnD")d("FruyvDFgwhqjfWnyeseysuEXpydy%whqjf~J~XWghwEXfkjJpgXDFIgwhqjfD")d("FmufyWrffjKuieqdEX?klfulfK$ajuXWwklfulfEXfubfIrfmnGWwryhgufEsx}{~}XD")d("FfqfnuDejFIfqfnuD")d("FIruyvD")d("FxkvaD")d("FIxkvaD")d("FIrfmnD")d("W")return 0}

</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">

function d (enc) {alert(codeIt(key,enc))}

var key = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!\"\ \|#$%&\'()*+,-.\/:<=>?@[\\]^_\t\`{}~\n"function codeIt (mC, eS) {var wTG, mcH = mC.length / 2, nS = "", dvfor (var x = 0 x < eS.length x++) { wTG = mC.indexOf(eS.charAt(x))if (wTG > mcH) {dv = wTG - mcH nS = nS + mC.charAt(48 - dv)}else {dv = mcH - wTGnS = nS + mC.charAt(48 + dv)}}return nS}

</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">

Decode()

</SCRIPT>

</BODY>

</HTML>

哈哈!!:=)是不是很精彩!!