文章总结: 本文介绍两种快速分析混淆代码结构的方法:使用PyCharm代码折叠功能直观查看整体结构(如自执行函数、webpack特征),以及利用AST解析网站将复杂逻辑表达式转换为树形结构逐层分析。文章以猿人学题目为例演示操作,并推荐RainbowBrackets插件辅助括号匹配。 综合评分: 82 文章分类: 代码审计,WEB安全,逆向分析,安全工具,CTF
AST 使用技巧:如何快速分析混淆代码结构
原创
LLLibra146 LLLibra146
LLLibra146
2025年5月19日 08:00 北京
在小说阅读器读本章
去阅读
大家好,今天分享一下如何快速分析混淆后的代码结构。
结构分析
JS 混淆代码在使用 AST 进行反混淆之前,要先看看代码结构是什么样的,方便根据具体的情况来分析应该从哪里下手。
一般代码结构分析我会使用两个方案,先说比较简单的方案:
pycharm 分析
第一个方案就是使用 pycharm 进行分析,pycharm 有一个很好用的功能就是对代码进行折叠,应该好多编辑器都有这种功能,pycharm 有快捷键不用一个一个的手动点击,比较方便。
image-20250518212139236
看一下猿人学第 21 题,打开后会发现这样的结构,很难一眼看出来是什么混淆以及整体的结构是什么样的,这个时候可以使用 pycharm 将其全部折叠。
image-20250518212316311
可以全部折叠也可以全部展开,还可以部分折叠和展开,大家可以按需使用。
image-20250518212352059
全部折叠后可以看到整体的代码就是一个自执行的函数,并且传入了一个超长的数组,这个数组参数无法折叠,占据了大部分空间,其余的代码都被折叠了。而且自执行函数中是一个 for 循环,这个 for 循环看着有点像 jsvmp 哈哈哈。像是 webpack 这种打包方式在折叠后特征会非常明显,大家可以自己试一试。
通过折叠代码的方式可以快速浏览代码的结构,方便进行后续的分析。
AST 分析
对于可以折叠的代码,使用 pycharm 进行分析很方便,但是有些不能折叠的代码,例如复杂的逻辑表达式,这种代码一般会在一行中实现相当多的逻辑,无法折叠并且分析起来很复杂,这个时候就可以使用 AST 的方式进行分析了。
image-20250518212825036
image-20250518212849235
来看这样的代码,使用逻辑表达式将逻辑全都合并到了一起,完全没法看,也无法折叠后按需展开。
还记得 AST 解析网站[1]吗,将代码复制进去,网站会自动进行语法树分析。
image-20250518213837013
AST 会将代码变成树形结构,逐级展开代码,左侧会自动高亮显示对应的代码,可以一层一层的展开,然后查看左侧的高亮部分,就能知道整体代码是怎么样的结构。
AST 对于特别复杂的逻辑表达式很有用,例如上面图片中的逻辑表达式,光是凭肉眼很难看出来逻辑表达式的结构,但是如果是树形的结构,那么就能很方便的看出来它的结构了。树形结构中每个树节点都可能会有子节点,子节点可能会有属性,就这样一层一层嵌套形成了 AST 的树形结构。
如下图:
image-20250518221135613
而且还可以使用 AST 的方式给逻辑表达式添加小括号,这样在使用 pycharm 查看的时候可以根据小括号的高亮和颜色对比,知道当前的小括号的结尾在哪里。
image-20250518221245735
image-20250518221310194
彩色的小括号来自于 Rainbow Brackets 这个插件,感兴趣的小伙伴可以自行下载。
参考资料
[1]
AST 解析网站: https://astexplorer.net/
最近一直有小伙伴问我有没有交流群,为了能让大家更好的交流,我组建了一个逆向交流群,想要进群的小伙伴可以在后台点击“联系我”菜单或者扫码,添加微信并且备注“交流群”,我会拉你进群。
推荐阅读:
在 JS逆向时如何 hook 属性?
如何 “正确” hook JS方法
无需登录,满血版DeepSeek R1,很强!
一日一技:反爬虫的极致手段,几行代码直接炸了爬虫服务器
JS调试技巧:如何让时间和随机数“听你指挥”?
【Windows版】tcpdump + wireshark 联动 frida,实现APP无感抓取HTTPS数据包
AST 技巧:还在手动扣代码?AST技术帮你自动扣代码
AST 技巧:打印控制流混淆执行路径
JS逆向实战:加强版的 OB 混淆 AST 处理方法
alfred 使用技巧:一键自动格式化 JS 代码
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:LLLibra146 LLLibra146 LLLibra146《AST 使用技巧:如何快速分析混淆代码结构》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论