吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1286|回复: 8
上一主题 下一主题
收起左侧

[Web逆向] AST从入门到入土:还原简单的动态JS混淆字符串

  [复制链接]
头像被屏蔽
跳转到指定楼层
楼主
mysticz 发表于 2026-1-9 09:24 回帖奖励
提示: 该帖被管理员或版主屏蔽

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| mysticz 发表于 2026-1-9 12:37 |楼主
炫迈 发表于 2026-1-9 10:40
你抓的这个规律很准,三个关键部分:自执行函数、字符串数组、解密函数,这个思路可以套用到很多网站

AS ...

感谢大佬指点。用eval时候已经把检测点用ast都处理干净了。
推荐
炫迈 发表于 2026-1-9 10:40
你抓的这个规律很准,三个关键部分:自执行函数、字符串数组、解密函数,这个思路可以套用到很多网站

AST遍历那块代码可以优化下,types.isIdentifier(arguments[0])这种判断太脆弱,有些混淆会嵌套多层,建议先用Babel的traverse做预处理,把嵌套调用展开,再匹配会更稳

解密函数提取那里,hy_codes = generator(parser.parse(codes.join('\n\n')), {compact: true}).code 这个compact参数在生产环境容易出问题,我遇到过压缩后变量名冲突,建议保留原始格式,或者用uglifyjs做安全压缩

你用的eval执行解密在简单场景没问题,但遇到复杂混淆可能卡死,我建议加个沙箱环境,用vm2或者safe-eval,设置超时时间,避免整个脚本挂掉

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
中二 + 1 + 1 我很赞同!

查看全部评分

4#
yichanmu 发表于 2026-1-9 15:31
5#
haiyangw 发表于 2026-1-10 08:36
持续学习
6#
炫迈 发表于 2026-1-10 08:50
分享点经验,动态混淆的核心就是每次请求返回的代码结构相同但变量名和函数体不同,用AST处理确实比正则稳得多,但要注意几个坑,一是eval执行前一定要用AST把反调试代码干掉,不然沙箱会崩,二是遇到嵌套调用的解密函数,建议先用Babel把AST展开再处理,三是字符串数组还原时要注意索引偏移,很多网站会故意在数组前面加几个废字符,炫迈老哥说的vm2沙箱确实重要,我之前用eval没设超时,遇到死循环直接把服务器CPU打满被运维找上门了,对了,最近吾爱签到用AST还原waf的脚本已经有人放GitHub了,搜py52pojie就能找到,不过要注意cookie有效期
7#
abcljdabc 发表于 2026-1-10 12:37
感谢,先下载,好用再来。
8#
cdchj 发表于 2026-1-11 16:24
感谢分享。
9#
shiweiwei 发表于 2026-1-11 17:06
谢谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-1-13 05:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表