AST反混淆实战篇二十六|条件表达式的优化

本文探讨了控制流平坦化的代码混淆技巧,通过实例展示了如何将复杂条件表达式优化为更易理解的形式。优化过程涉及遍历ConditionalExpression并重构代码,适用于前端和后端开发者。附带源码链接,提供实用插件资源。
摘要由CSDN通过智能技术生成

控制流平坦化是代码混淆最常见的伎俩,有些控制流比较简单,没有条件语句,直接就给出了指向执行下一条语句的值。而有些有条件语句,就比较复杂,条件的真假,会导致走向不同的代码分支。想要还原并且通用,是件很困难的事。当然,本文不是解决这种困难的事,而是尽量将复杂的代码简单化。

一.插件名称

条件表达式的优化。

二.优化实例

优化前:

w = K?123:456;

优化后:

K ? w = 123 : w = 456;

三.是否通用

是。

四.还原思路

  • 优化前后,代码变动不大,这里直接遍历ConditionalExpression,其父节点是一个AssignmentExpression,需要做判断,避免死循环

  • 优化后的条件表达式,其consequent 和 alternate 都变成了 AssignmentExpression 类型,因此需要进行构造

  • 再用父节点替换新构造的节点即可。

五.插件源码

https://t.zsxq.com/6qzjauf

AD:

欢迎加入我的个人星球,编写了很多有用的插件,只需要稍微有一点js基础即可,对爬虫工程师和前端工程师均有一定的帮助。

03a500f7c9c86ff40820a8a11bfe6ac5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值