JS解混淆-AST还原案例

目录

        • 一、js混淆了解
          • 1、为什么要混淆?
          • 2、常见的混淆模样
        • 二、AST初步认识
        • 三、解混淆常用的方法

一、js混淆了解

1、为什么要混淆?
  • js混淆的作用:为了防止爬虫通过分析js内容,轻易的还原出网站的加密逻辑,而做出的安全防御手段之一,常常将一个逻辑简单的可能十几行算法代码思路,通过变量混淆替换、增加冗余无效代码、增加无限debugger反调试功能、增加多层的套娃式if~else代码、以及埋陷阱等混淆成几千行的js代码,给人第一印象难读,对入门分析者造成恐惧心理
  • 如图,我们常见的ob混淆就是这个原理,左侧也就5行的代码,经过ob混淆这么一个操作,就有了右侧很多_0x开头的字符串/函数混淆的代码,逻辑调用分析难度增加,是反爬的常用手段
    JS解混淆-AST还原案例_第1张图片
    JS解混淆-AST还原案例_第2张图片
2、常见的混淆模样
  • 拿输出hello world为例子,常见的混淆有这6种:ob混淆、sojson混淆、eval混淆、jsfuck混淆、AAEncode混淆、jjEncode混淆,用的比较多的混淆是ob混淆、sojson混淆、eval混淆这三种

    function hi() {
        console.log("Hello World!");
    }
    hi();
    
  • ob混淆:ob混淆网址
    JS解混淆-AST还原案例_第3张图片

  • sojson混淆:sojson混淆网址
    JS解混淆-AST还原案例_第4张图片

  • eval混淆:eval混淆网址
    JS解混淆-AST还原案例_第5张图片

  • jsfuck混淆: jsfuck官网混淆网址,jsfuck混淆网址
    JS解混淆-AST还原案例_第6张图片

  • AAEncode混淆:AAEncode混淆网址
    JS解混淆-AST还原案例_第7张图片

  • jjEncode混淆:jjEncode混淆网址
    JS解混淆-AST还原案例_第8张图片

  • eval、ob、sojson混淆案例应用

二、AST初步认识

  • ast 又称 抽象语法树, 比如将js代码已树节点的形式展现,有点类似html源码的各个标签父子关系,关于ast的介绍可以进一步看这篇文章

  • ast的作用:ast作用主要是将混淆的难读的js还原成可读性高的js,对整个js的逻辑不做任何改变,你可以理解为化繁为简,可见性的瘦身,也许网页上是1w多行的混淆代码,瘦身后只有不到1千行;脱混淆后要注意替换到网页试试看能否能用
    JS解混淆-AST还原案例_第9张图片

  • 初次入门尝试体验案例,一般是打开可视化显示AST结构工具分析节点;处理逻辑:就是一颗树,不停的找分支,确定当前分支的各个属性特性,即定位要改的节点就是找type,然后对该type节点操作即可,你可以简单理解为html里面找到了父标签然后对子标签进行操作,理解为xpath或者css选择器的逻辑也不为过
    JS解混淆-AST还原案例_第10张图片

三、解混淆常用的方法

  • 1、直接用开源的插件试试先:如林佬的v_jstools插件,解混淆插件v_jstools使用,又如Nanda佬的通过ast来解决jsfuck混淆的具体思路讲解
    JS解混淆-AST还原案例_第11张图片

  • 2、特殊案例特殊解决:如哲哥的ast还原框架, ast框架一键还原ali 140 混淆, 来自哲哥开源代码:https://github.com/sml2h3/ast_tools , 环境准备:node安装 ,vscode安装,以及ast相关模块安装看如下命令

    npm install iconv-lite -g
    npm install @babel/parser -g
    npm install @babel/traverse -g
    npm install @babel/types -g
    npm install @babel/generator -g
    npm install md5-node -g
    

    JS解混淆-AST还原案例_第12张图片

  • 3、特殊案例特殊解决:如渔滒 的ast自动扣webpack脚本
    JS解混淆-AST还原案例_第13张图片

  • 4、特殊案例特殊解决:如包子xia的某数旧版AST分析还原
    JS解混淆-AST还原案例_第14张图片

  • 5、特殊案例特殊解决:如带泪的鱼的某验滑块ast混淆还原分析
    JS解混淆-AST还原案例_第15张图片

  • 6、学习ast还原代码编写,自己写还原混淆逻辑:如悦来客栈的老板(蔡老板)的公众号有还原常见混淆的思路讲解
    JS解混淆-AST还原案例_第16张图片

  • 7、百度搜索其它的一些解混淆思路,如:jjencode、AAencode混淆的解法

  • 后续如有新的发现,会持续编写博客进行更新~

你可能感兴趣的:(SpiderCrawl,javascript,爬虫)