JS中语句的另类写法。
2016-05-26 11:13
615 查看
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”
后面的就不用解释了,原来是将字符串倒过来。做为病毒,应该是为了反杀毒。
这里仅简单记录一下字符串后面跟方括号可以调用类型的方法的问题。病毒的源码很长,在此不做分析。
相关文章推荐
- Javascript 严格模式详解
- js前台判断开始时间是否小于结束时间
- JS 学习计算器编写
- Web版 扫雷 JS实现
- 循环取到json中的字段数据,加到html中
- js 事件绑定函数与this的使用
- javascript删除元素节点
- jsp页面静态化
- JS遮罩插件 -- JqLoad
- js中函数学习笔记
- fileuploader.js 插件使用帮助
- Javascript水平提升
- 在jsp中获取已选中checkbox其他列的值
- FK JavaScript:ArcGIS JavaScript类库加载不成功而导致的程序异常
- javascript学习——DOM扩展
- javascript 是如何体现继承的
- 浅析js中2个等号与3个等号的区别
- 2016年5月26日上午(妙味课堂js基础-1笔记二)
- 动态加载js、css的简单实现代码
- JSON基础