高频问题|为什么AST反混淆插件执行了,但是代码没有被处理?

关注它,不迷路。       

本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!

1.问题

很多时候,我们执行了AST反混淆插件,但是代码和没有执行前是一样的。

加了打印函数(console.log),发现特征被过滤了,但是特征明明是符合的,问题出在哪里?

2.解决

上面的这种情况一般是 scope 没有被重构导致的,以前我的建议是在使用了 scope 的插件最后一行加一句代码:

scope.crawl();

但是在实际操作过程中,发现加了这个,代码运行比较缓慢,并且也起不到作用。

所以,我后面又想了个另外的办法,重新解析一下ast,即在插件代码前加一行代码:

ast = parser.parse(generator(ast).code);

这行代码可以解决大部分情况。

但是它并非完美,也有不能解决的情况。

后来,我又想了招,既然重新解析都不行,那生成文件后再解析,应该没有任何问题了吧:

let { code } = generator(ast);
files.writeFileSync("./Temp.js", code, (err)=>{});
const {execSync} = require('child_process');
execSync('node ./main.js ./Temp.js ./decode_ok', (error,stdout,stderr)=>{
    if (error) {
        console.error(`执行的错误: ${error}`);
        return;
    }
}
);
files.unlink('./Temp.js', (err)=>{
    if (err) {
        return;
    }});

上面的代码是将代码保存为 Temp.js 文件,然后再执行一次 main.js,进行反混淆处理,执行完毕后,删除 Temp.js 文件即可。

这样就能完美解决插件不起作用的问题了。

今天的分享就到这里,感谢阅读。

欢迎加入知识星球,学习更多AST和爬虫技巧。

fd649dc628ac333132c2092867a74671.jpeg

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值