著名的5s盾,对js代码进行了大量的混淆,其第一层js代码中,逗号表达式非常的多.研究后,我自己也搞了几个简单的实例来生成逗号表达式,感觉其实所谓的混淆也挺简单的。

一.插件名称

逗号表达式混淆。

二.混淆实例

混淆前:

function atob(w) {var B, C, D, E, F, G;B = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";w = String(w)["replace"](/[\t\n\f\r ]+/g, '');w += '=='["slice"](2 - (w["length"] & 3));D = '';for (G = 0; G < w["length"]; C = B["indexOf"](w["charAt"](G++)) << 18 | B["indexOf"](w["charAt"](G++)) << 12 | (E = B["indexOf"](w["charAt"](G++))) << 6 | (F = B["indexOf"](w["charAt"](G++))),D += E === 64 ? String["fromCharCode"](C >> 16 & 255) : F === 64 ? String["fromCharCode"](C >> 16 & 255, C >> 8 & 255) : String["fromCharCode"](C >> 16 & 255, C >> 8 & 255, C & 255)) {}return D;}

混淆后:

function atob(w) {var B, C, D, E, F, G;for (B = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", w = String(w)["replace"](/[\t\n\f\r ]+/g, ''), w += '=='["slice"](2 - (w["length"] & 3)), D = '', G = 0; G < w["length"]; C = B["indexOf"](w["charAt"](G++)) << 18 | B["indexOf"](w["charAt"](G++)) << 12 | (E = B["indexOf"](w["charAt"](G++))) << 6 | (F = B["indexOf"](w["charAt"](G++))), D += E === 64 ? String["fromCharCode"](C >> 16 & 255) : F === 64 ? String["fromCharCode"](C >> 16 & 255, C >> 8 & 255) : String["fromCharCode"](C >> 16 & 255, C >> 8 & 255, C & 255)) {}return D;}

三.是否通用

是。

四.混淆思路

  • 首先观察混淆前后的两段代码,发现 for语句前面的 一些 ExpressionStatement 节点全部归并到了 init节点里面,因此这里遍历 ForStatement 节点最好。

  • 获取 ForStatement 节点的所有前置节点并遍历,依次构建逗号表达式并删除前置节点,判断无法构成逗号表达式的语句退出循环。

  • ForStatement 语句的init节点替换成逗号表达式。

  • 注意,一般init节点是 VariableDeclaration 类型,需要过滤掉。

五.插件源码

https://t.zsxq.com/iMZjybY

AD:

欢迎加入我的个人星球,编写了很多有用的插件,只需要稍微有一点js基础即可,对爬虫工程师和前端工程师均有一定的帮助。

JavaScript 代码混淆实战(七)|逗号表达式的混淆相关推荐

  1. C语言逗号表达式 - C语言零基础入门教程

    目录 一.C 语言逗号表达式简介 1.逗号表达式书写形式 2.逗号表达式计算结果 二.C 语言逗号表达式实战 1.逗号表达式的使用 2.逗号表达式与赋值表达式区别 三.猜你喜欢 零基础 C/C++ 学 ...

  2. 【C语言进阶深度学习记录】十四 C语言中 三目运算符和逗号表达式

    文章目录 1 三目运算符 1.1 三目运算符的返回类型的代码案例分析 2 逗号表达式 2.1 逗号表达式代码案例分析 2.2 如何用一行代码实现 strlen函数 3 总结 1 三目运算符 三目运算符 ...

  3. 如何对Javascript代码进行二次压缩(混淆)

    如何对Javascript代码进行二次压缩(混淆) 对Javascript代码进行压缩(混淆),可以有效减少传输和加载时间.但是,不是所有的变量(方法)都能被混淆的,一般来说,只有非属性的变量(方法) ...

  4. 几维安全Javascript代码混淆(js加密)在线使用说明

    2019独角兽企业重金招聘Python工程师标准>>> 几维安全Javascript代码混淆是一项在线加密服务,用户只需将JS文件打包成zip包,提交到加密平台,即可完成代码混淆.字 ...

  5. Java 压缩/混淆 JavaScript 代码

    基本上都是自己写的工具构建前端工程,压缩/混淆 JavaScript 代码的工具必不可少.我们是 Java 平台的,就是说用 Java 去压缩 JS,这样比较方便.虽然咱们可以外部调用 node 等专 ...

  6. 前端JavaScript代码混淆加密原理介绍

    因为JavaScript大都是运行在浏览器端,这就导致任何人都可以直接对网站的代码进行查看,如果代码没有进行任何处理就会导致直接暴露源码,他人便可轻而易举的复制你的劳动成果,但是由于没有纯粹的加密方案 ...

  7. javascript代码混淆与加解密

    开发一个python的程序,功能很简单,对某个网页发送post请求,把response的结果解析后存入数据库,供后续分析. 抓包 首先是抓包,使用burp suite,发现该网页原始的post请求如下 ...

  8. AST反混淆实战-高级难度

    Ast实战:反混淆解析高级难度ob混淆网站 https://obfuscator.io/ 一.混淆demo生成 二.混淆demo说明 步骤相同-不在冗余 详情参考:AST反混淆实战-中等难度 http ...

  9. AST反混淆实战-经典ob混淆

    Ast实战:反混淆解析经典ob混淆 一.混淆demo获取 ob混淆源码 来自猿人学14题 https://match.yuanrenxue.com/api/match/14/m demo.js //为 ...

最新文章

  1. 前两天谁要的抢红包利器,给你安排了
  2. 浅析epoll – epoll例子以及分析
  3. linux 远程图形终端,图形终端远程操作Linux
  4. 阿里道延:我对技术架构的理解与架构师角色的思考
  5. oc开源应用_失眠:一款开源应用,可根据睡眠周期告诉您何时入睡
  6. 第一周冲刺第二天博客
  7. ConfigMap用管理对象的方式管理配置
  8. MySQL统计两部分查询结果记录数量比值
  9. ctguoj--考新郎(排列组合+错排公式)
  10. linux 安装萍方字体,苹方字体大全-苹果苹方字体全套打包下载【windows完整免费版】-西西软件下载...
  11. 配置管理工作职责思考
  12. 考研数学随笔(2)——微分积分关系,中值定理
  13. 笔记一:画笔、笔刷认识
  14. geoip2配置及使用
  15. OneNote无法登录 遇到临时服务器问题
  16. 获取新榜微信公众号指数信息,并服务器上部署
  17. java乐器培训班报名管理系统springboot+vue
  18. Android kotlin自定义自动换行LinearLayout
  19. html图片锚点怎么设定,html怎么设置锚点
  20. 读书笔记--《初等数论(第三版)》(闵嗣鹤 严士健 编)第一章 整数可除性(上)

热门文章

  1. Ubuntu 14.04 64bit 安装 WPS 2013
  2. 读mdb数据库中的表,返回datatable;链接postgresql数据库,读取数据库中表
  3. php 程序发送谷歌邮件
  4. 微软WindowsPhone7.5发布会图文实录windowsphone
  5. REBOL 3.0 即將支援 Unicode
  6. “万物盲盒”的时代,企业如何玩转“盲盒”经济?
  7. 【艾特淘】店铺没流量?教你如何获取免费流量来源
  8. 贴吧顶贴php脚步,百度贴吧全自动无限顶贴技巧
  9. 资源不准下的网络故障定位探索
  10. 通用查询实现方案(可用于DDD)[附源码] -- 简介