添加两个alert,就可以看明白这段代码的意图了,如下:
执行结果如下图:
可以看到这段代码只是为了改变window.location.href, 跳转到另外一个页面。这里用了个加解密的把戏来混淆代码。
Javascript语法中,关于字符字面量的表示方法,例如:换行:"\n", 制表符:"\t",回车:"\r",对于普通字符也可以用这种表示方法:比如小写字母"a"可表示为:"\x61"。可以用alert('\x61')看到效果。所以:ey = "\xc3\x92\xa42\xa8:l\xf9D\xdal\xeex\xaeX\xea\x00\x8e\xe7e\xcfp\xed. \x85\xca\x0fH\x81\xba\xf3\x9f\xd8\x11~\x1c\x92\x002\xec\x8e\x08r\xcb\x11\x8e/\xaaH\x89\x8d";
其实就是一串加密的乱码字符串:"ä2¨:lùDÚlîx®XêçeÏpí. ÊHºóØ~2ìrË/ªH"。
补充:字符的字面量表示法有三种形式如下:
\mnn :八进制代码 nnn 表示的字符(m是0到2的数字,m为0时可省略m,n 是 0 到 7 中的一个八进制数字)
\xnn : 十六进制代码nn 表示的字符(n 是 0 到 F 中的一个十六进制数字)
\unnnn : 十六进制代码nnnn 表示的 Unicode 字符(n 是 0 到 F 中的一个十六进制数字)
表示小写字母"a"可以用"\141"、"\x61"、'a'
这段代码 使用JS混淆 加密了。