本文仅供学习交流使用,请勿用于商业用途或不正当行为
如果侵犯到贵公司的隐私或权益,请联系我立即删除
AST是抽象语法树,名字感觉很高级,其实也不用怕,可以简单理解为是将JS代码归类后的JSON,并且提供了很多方法给你对这个JSON进行增删改查。
学习一个新东西,首先一定要搞清楚它有什么用,都不知道有啥用,学习它干啥,对吧
作为一个爬虫攻城狮,JS逆向也是家常便饭了,JS逆向经常会遇到各种混淆过后的代码,极其难以阅读,这时候就可以使用AST对这些混淆代码进行一定的还原处理,得到一个相对容易阅读的JS代码,方便我们进行JS分析。
阅读本文需要有一点AST的基础,不要害怕,只需要稍微学习一点AST知识就行了,并不需要掌握AST的全部知识才能看得懂,不过最起码要对AST定位节点有一点认识,关于AST的学习大家肯定找蔡老板啊
相信只要能认真阅读完本文内容,理解其中的概念,就能对AST还原混淆代码有一点点感觉了,并会发现AST其实也不是那么难。
本次反混淆的是下面这个文件
https://static.geetest.com/static/js/fullpage.8.9.5.js复制代码
保存到本地,收缩一下代码看看整体结构
简单看下这几个function
嗯, 啥也看不懂…
别慌,静下心来,一点一点分析,一点一点解决!
观察代码发现里有很多地方调用了AJgjJ.DAi,搜索出515个匹配结果,如下图
在匹配结果中有两类调用,如上图红框标示的
第一个:带括号的AJgjJ.DAi(79); 暂时不知道是在干啥;
第二个,不带括号的AJgjJ.DAi,可以理解为
mZtVWz = ['qhicV'].concat(AJgjJ.DAi)复制代码
concat()是合并数组的作用
也就是说AJgjJ.DAi应该是一个数组
控制台打印看看