上周直播讲解了第16题混淆js的还原,本文再做个补充,方便星友们学习AST插件的编写技巧。
一.实战网址
https://match.yuanrenxue.com/match/16
二.加密参数分析
抓包,分析接口数据:
点击去,即可发现加密参数 m 及 t 赋值的地方:
在 r.m = n[e(528)](btoa, p_s) 这行代码打上断点,再次请求,断住后,控制台输入 btoa并回车,双击下面的代码,来到这里:
代码往上翻,把整个 732 相关的代码抠下来,并保存到js文件中。
三.解混淆分析
代码扣下来格式化,看着有点像 ob 混淆,但与常规的还是有点区别,用我那个一键还原无法还原,不过没关系,见招拆招就好。
分析混淆文件,看到了这些函数调用:
之前的文章也讲过,像这种 函数调用,其实参为字面量,大概率是可以进行还原的,因此我们先进行还原?
不慌,我们看看它的函数定义在哪里:
可以看到,函数定义 l ,然后 l 又赋值给了e,看到这种情况,我们可以先将e替换成l,即还原重复定义的变量。
AST源代码如下:
//删除重复定义且未被改变初始值的变量
const deleteRepeatDefine = {
"VariableDeclarator|FunctionDeclaration"(path)
{
let {node,scope,paren