JS.Encode生成的乱码虽不可读但仍可执行。由于代码中包含转义字符,直接解码常失败。本文介绍在解码前需先替换掉八种以反斜线开头的转义字符(如\n、\t等),替换后即可正确执行解码操作。
JS.Encode乱码特性与解码难点
JS.Encode技术生成的代码表现为看似无意义的乱码,这种形式虽然丧失了人类可读性,但依然能够被浏览器正常解析并执行。
网络上虽存在多种针对JS加密代码的解码方案,但当代码内部包含特定的转义字符时,常规方法往往无法实现正确解码。
JavaScript语言定义了八种特定的转义字符,它们均以反斜线(\)作为起始标识。JavaScript解释器在遇到反斜线时会进行特殊处理,以还原程序员意图表达的字符含义。
|
序 |
转义字符 |
使用说明 |
|---|---|---|
|
1 |
\b |
后退一格(Backspace) |
|
2 |
\f |
换页(Form Feed) |
|
3 |
\n |
换行(New Line) |
|
4 |
\r |
返回(Carriage Return) |
|
5 |
\t |
制表(Tab) |
|
6 |
\' |
单引号 |
|
7 |
\" |
双引号 |
|
8 |
\\ |
反斜线(Backslash) |
解码前的转义字符处理
在对JS加密代码进行解密操作之前,必须优先处理并替换代码中存在的转义字符。
具体示例如下:
\\ ------- \
\t 代表 Tab 制表符
以及其他类似字符。
完成上述替换后,即可对代码进行正确的解码。