在浏览器中使用 AST

 

 

https://mp.weixin.qq.com/s/oXYSzsPVr5Ro348c9Gn_QQ

 

<!DOCTYPE html>
<html lang="cn">
<head>
    <meta charset="UTF-8">
    <title>AST 实时反混淆模版</title>
</head>
<body>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script>
    //导入所需要的依赖,如果不够请自行添加,非必要这里不用改动
    const types = Babel.packages.types;
    const parser = Babel.packages.parser;
    const traverse = Babel.packages.traverse.default;
    const generator = Babel.packages.generator.default;

    //实际的反混淆函数
    function astProcess(s) {
        //解析代码
        let ast = parser.parse(s);

        //这里写你的反混淆逻辑
        //举个例子:
        traverse(ast, {
            Identifier(path) {
                path.node.name = path.node.name.split('').reverse().join('');
            }
        })
        //反混淆逻辑结束

        let {code} = generator(ast, opts = {
            "compact": true,//建议压缩代码,防止格式化检测。压缩后可以使用浏览器格式化,浏览器格式化不会触发格式化检测
        });
        return code;
    }
</script>
<script>
    //这里调用 AST 反混淆逻辑,举个例子
    let code = astProcess('let abcd=1;
' +
        'console.log(abcd)')
    console.log(code);

</script>
</body>
</html>

 

posted @ 2025-06-03 15:16  AngDH  阅读(21)  评论(0)    收藏  举报