JS中语句的另类写法。

JS中语句的另类写法。

收到一封邮件,附件被提示为病毒,出于好奇,下载到本地研究了一番。

邮件的附件是一个ZIP压缩包,解压后,里面仅有一个WSF类型的文件,WSF类型文件默认用windows系统的脚本解析器打开。
部分源码如下:

<job>
<script language = "JScript" >
var aDndEiCXd = ';}\n;f nruter  \n  \n;)""((..省略若干字符))x\\" = 22_ rav'["split"]('')["reverse"]()["join"]('');
/*@cc_on
 eval(aDndEiCXd);
 @*/
</script>
</job>

可以看出是一段JS的代码,开始定义了一个貌似字符串变量的aDndEiCXd。然后用eval将其转为JS语句执行。
字符串是用单引号圈起的,里面有若干个双引号。
奇怪的是,在字符串内容之后,跟了一串内容:["split"]('')["reverse"]()["join"]('')
这种写法不常见。

于是,自己建个JS,开始测试:

    var a='abcdefg'["split"];
    console.log(a);          //返回一个Function.

原来后面跟了["split"]后,变量a已经成为一个Function。字符串String做为一个基本包装类型,也可以如调用一个对象的方法一样,来调用String的方法,而这时返回值就是调用的方法了。所以会console出Function,即输出了调用的方法的类型。

继续测:

    var a='abcdefg'["split"]('');
    console.log(a);       //返回一个数组:[ 'a', 'b', 'c', 'd', 'e', 'f', 'g' ]

有了上面那个Function的输出,返回这个数组就不难理解了。就是将字符串按每个字符分割为数组。

继续:

    var a='abcdefg'["split"]('')["reverse"]()["join"]('');
    console.log(a);         //输出字符串:“gfedcba”

后面的就不用解释了,原来是将字符串倒过来。做为病毒,应该是为了反杀毒。

这里仅简单记录一下字符串后面跟方括号可以调用类型的方法的问题。病毒的源码很长,在此不做分析。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值