在某宝的登录界面上,有这么一段代码

S.one(window).on("load", function() {eval(function(p, a, c, k, e, d) {e = function(c) {return c};if (!''.replace(/^/, String)) {while (c--) {d[c] = k[c] || c}k = [function(e) {return d[e]}];e = function() {return '\\w+'};c = 1};while (c--) {if (k[c]) {p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c])}}return p}('0 1=5;0 2=4;0 3=1&2;6.9("8").7=3;', 10, 10, 'var|a|b|c|110|10|document|value|gvfdc|getElementById'.split('|'), 0, {}))
});

初看之下,很复杂,实际上,分析下来真的很简单,最大的特色就是利用string的replace代码完成了一个把某些文本构造成一个真实有用的语句,然后执行

先来看这句

''.replace(/^/, String)

实际上这句的结果永远为false,大家可以用Firebug在控制台下执行一下看。

这样分析下来, 那下面这句

while (c--) {d[c] = k[c] || c}

在分析这句之前,我们先来看看K的值,它的值为'var|a|b|c|110|10|document|value|gvfdc|getElementById'.split('|')执行得到的,会得到一个10个元素的字符串数组

所以,上面那句语句的含义,我们现在也可以很清楚的知道了,就是分别把它们放到对应下标的词典中去。

最后一个大复杂句,我们再来看一下

while (c--) {if (k[c]) {p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c])}}

由于上面c=1了,所以这个循环,实际上只执行一次,就是这个关键的replace语句。把所有的单词进行了一个全局替换,替换的内容由k[c]这个值。前面我们会看到k[c]这个东西实际为下面语句:

k = [function(e) {return d[e]}];

看到了吗,实际上它返回的就是对应d这个词典中以e(也就是前面正则匹配的单词)为下标对应的项。

到此,整个这么大块语句下来,最后的结果就很清楚了。

你还不知道,那还不快用Firebug去控制台执行看看。

这说不定会成为你写让人看不懂代码的一个突破哦

转载于:https://www.cnblogs.com/richardy2012/p/3693802.html

解释某宝的一段混淆视听的代码相关推荐

  1. 我与WIFI宝的一段奇缘

    我与WIFI宝的一段奇缘 我背井离乡来到大城市在一家大型公司行政部工作,租赁的房子只有一根网线,还是在室友的房间内,而办公室居然木有无线网络,这对于我这种手机控而言,是多么痛苦的事情. 每天坐在公交车 ...

  2. taobao.trades.sold.increment.get( 淘宝店铺订单交易数据接口,淘宝店铺订单解密提额接口,淘宝店铺订单解密接口)代码对接教程

    taobao.trades.sold.increment.get( 淘宝店铺订单交易数据接口,淘宝店铺订单解密提额接口,淘宝店铺订单解密接口)代码对接教程如下: 1.公共参数 名称 类型 必须 描述( ...

  3. vba 编辑combobox内容_初识Visual Basic编辑器并建立一段简单的代码

    大家好,从今日开始我正式推出"VBA之EXCEL应用"教程,这个教程是面向初学人员的教程,教程一共三册,十七个章节,从简单的录制宏实现一直讲到窗体的搭建,都是我们在利用EXCEL工 ...

  4. php 间隔时间执行任务,PHP间隔一段时间执行代码的方法

    PHP间隔一段时间执行代码的方法 发布于 2015-11-16 18:26:46 | 230 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...

  5. Python:非常详细的解释如何判断某个变量的类型以及代码实现

    Python:非常详细的解释如何判断某个变量的类型以及代码实现 目录 非常详细的解释如何判断某个变量的类型以及代码实现 非常详细的解释如何判断某个变量的类型以及代码实现 #判断变量类型的函数 def ...

  6. php图片变成代码怎么解决,一段图片处理代码PHP代码转C#代码,该怎么解决

    一段图片处理代码PHP代码转C#代码 把下面代码转换成 C#代码 $res = json_decode(stripslashes($_POST['jsondata']), true); /* get  ...

  7. 总结以下三种方法,实现c#每隔一段时间执行代码:

    总结以下三种方法,实现c#每隔一段时间执行代码: 方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间: 方法二:使用System.Timers.Timer类: 方法三:使用Sys ...

  8. 段寄存器中代码段数据段堆栈段附加段

    段寄存器中代码段数据段堆栈段附加段

  9. 汇编语言:编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储b段中

    题目介绍 程序如下,编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储b段中. assume cs:code,ds:a,ss:ba segmentdw 1,2,3,4,5,6,7 ...

最新文章

  1. Spring(AbstractRoutingDataSource)实现动态数据源切换
  2. B站面试官炫耀身价过亿,贬低北邮应试者引热议!不知北邮毕业的B站创始人作何感想?
  3. sarscape 将dem文件转化成stl_SARscape与SARProz软件中的重要缩写
  4. java对象与c网络语言通信,JAVA与C语言的网络通信代码案例.pdf
  5. Java中线程池,你真的会用吗?
  6. 第七章:在Spark集群上使用文件中的数据加载成为graph并进行操作(3)
  7. opencv puttext
  8. Microsoft C++ 异常: 内存位置处的 std::bad_alloc问题解决办法
  9. Pytorch生成Tensor常用方法汇总
  10. 百度网盘上传文件时提示超过4G限制如何解决?
  11. office 论文 页码_论文页码如何设置,如何给论文设置完美页码
  12. 服务器端方法级权限控制----------@Secured注解的使用
  13. window、linux、mac 文件路径禁止字符, 路径长度【全网总结】
  14. android开发网站的流程图,Android_客户端开发流程图及案例.pdf
  15. Vue 2.爷爷点击事件触发孙子的方法
  16. 前端性能监控相关指标
  17. 迄今微软不同时期发布的SQL Server各版本之间的大致区别,供参考查阅
  18. 企业会计准则(具体准则)第4号——固定资产
  19. 2022年web前端开发值得学习的10个javascript框架
  20. 运城学院C语言题目,C语言课程设计实验报告【运城学院计算机科学与技术系】.doc...

热门文章

  1. 计算机实训计划总结报告,计算机实训总结范文
  2. 微软即将关闭基本身份验证,对企业与员工有什么影响?
  3. Java 中多态的实现原理
  4. 为什么中文不能用来编程呢?难道中文比英语差?看完长见识了
  5. 关于vec(ABC)=(C ^{T}⊗A)vec(B)的计算
  6. IMSI和MSISDN
  7. MEmu Android Emulator
  8. 怎么才能成为一个软件架构师?
  9. 对话框程序启动隐藏窗口
  10. Socket长连接和短连接