JS中语句的另类写法。
来源:互联网 发布:逆战淘宝 编辑:程序博客网 时间:2024/05/22 10:58
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 0
- JS中语句的另类写法。
- c# 的另类写法
- ViewHolder 的另类写法
- 函数的另类写法:
- js中if语句的几种优化代码写法
- java中调用存储过程的另类写法
- js中&&,||的另类广泛用法
- 关于js中&&和||的另类用法
- where 条件的另类写法
- 冒泡排序的另类写法
- UITableView跳转的另类写法
- hello word的另类写法
- 字段值的另类写法
- js中时间的写法
- js 中定时器的写法
- JS中模块的写法
- JS中模块的写法
- Js中对象的写法
- codeforces 676D (bfs 模拟)
- CMD通道符、输出符学习
- ios唯一标示符
- shell之 while read a b的意思
- 贝叶斯定理
- JS中语句的另类写法。
- c++队列
- Idea 配置修改
- easy_install安装软件出现“ImportError: Entry point ('console_scripts', 'easy_install') not found”
- Web Navigation
- 《Motion Design for iOS》(二十二)
- 关于请求返回的500,404.等错误
- fileuploader.js 插件使用帮助
- 有关于图片压缩大小--尺寸裁剪 和 压缩系数