JavaScript 代码混淆实战(七)|逗号表达式的混淆
著名的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 代码混淆实战(七)|逗号表达式的混淆相关推荐
- C语言逗号表达式 - C语言零基础入门教程
目录 一.C 语言逗号表达式简介 1.逗号表达式书写形式 2.逗号表达式计算结果 二.C 语言逗号表达式实战 1.逗号表达式的使用 2.逗号表达式与赋值表达式区别 三.猜你喜欢 零基础 C/C++ 学 ...
- 【C语言进阶深度学习记录】十四 C语言中 三目运算符和逗号表达式
文章目录 1 三目运算符 1.1 三目运算符的返回类型的代码案例分析 2 逗号表达式 2.1 逗号表达式代码案例分析 2.2 如何用一行代码实现 strlen函数 3 总结 1 三目运算符 三目运算符 ...
- 如何对Javascript代码进行二次压缩(混淆)
如何对Javascript代码进行二次压缩(混淆) 对Javascript代码进行压缩(混淆),可以有效减少传输和加载时间.但是,不是所有的变量(方法)都能被混淆的,一般来说,只有非属性的变量(方法) ...
- 几维安全Javascript代码混淆(js加密)在线使用说明
2019独角兽企业重金招聘Python工程师标准>>> 几维安全Javascript代码混淆是一项在线加密服务,用户只需将JS文件打包成zip包,提交到加密平台,即可完成代码混淆.字 ...
- Java 压缩/混淆 JavaScript 代码
基本上都是自己写的工具构建前端工程,压缩/混淆 JavaScript 代码的工具必不可少.我们是 Java 平台的,就是说用 Java 去压缩 JS,这样比较方便.虽然咱们可以外部调用 node 等专 ...
- 前端JavaScript代码混淆加密原理介绍
因为JavaScript大都是运行在浏览器端,这就导致任何人都可以直接对网站的代码进行查看,如果代码没有进行任何处理就会导致直接暴露源码,他人便可轻而易举的复制你的劳动成果,但是由于没有纯粹的加密方案 ...
- javascript代码混淆与加解密
开发一个python的程序,功能很简单,对某个网页发送post请求,把response的结果解析后存入数据库,供后续分析. 抓包 首先是抓包,使用burp suite,发现该网页原始的post请求如下 ...
- AST反混淆实战-高级难度
Ast实战:反混淆解析高级难度ob混淆网站 https://obfuscator.io/ 一.混淆demo生成 二.混淆demo说明 步骤相同-不在冗余 详情参考:AST反混淆实战-中等难度 http ...
- AST反混淆实战-经典ob混淆
Ast实战:反混淆解析经典ob混淆 一.混淆demo获取 ob混淆源码 来自猿人学14题 https://match.yuanrenxue.com/api/match/14/m demo.js //为 ...
最新文章
- 前两天谁要的抢红包利器,给你安排了
- 浅析epoll – epoll例子以及分析
- linux 远程图形终端,图形终端远程操作Linux
- 阿里道延:我对技术架构的理解与架构师角色的思考
- oc开源应用_失眠:一款开源应用,可根据睡眠周期告诉您何时入睡
- 第一周冲刺第二天博客
- ConfigMap用管理对象的方式管理配置
- MySQL统计两部分查询结果记录数量比值
- ctguoj--考新郎(排列组合+错排公式)
- linux 安装萍方字体,苹方字体大全-苹果苹方字体全套打包下载【windows完整免费版】-西西软件下载...
- 配置管理工作职责思考
- 考研数学随笔(2)——微分积分关系,中值定理
- 笔记一:画笔、笔刷认识
- geoip2配置及使用
- OneNote无法登录 遇到临时服务器问题
- 获取新榜微信公众号指数信息,并服务器上部署
- java乐器培训班报名管理系统springboot+vue
- Android kotlin自定义自动换行LinearLayout
- html图片锚点怎么设定,html怎么设置锚点
- 读书笔记--《初等数论(第三版)》(闵嗣鹤 严士健 编)第一章 整数可除性(上)
热门文章
- Ubuntu 14.04 64bit 安装 WPS 2013
- 读mdb数据库中的表,返回datatable;链接postgresql数据库,读取数据库中表
- php 程序发送谷歌邮件
- 微软WindowsPhone7.5发布会图文实录windowsphone
- REBOL 3.0 即將支援 Unicode
- “万物盲盒”的时代,企业如何玩转“盲盒”经济?
- 【艾特淘】店铺没流量?教你如何获取免费流量来源
- 贴吧顶贴php脚步,百度贴吧全自动无限顶贴技巧
- 资源不准下的网络故障定位探索
- 通用查询实现方案(可用于DDD)[附源码] -- 简介