js逆向-使用AST技术还原混淆代码

本文探讨如何利用AST(抽象语法树)技术来还原JavaScript混淆代码,包括表达式还原和字符串还原。在表达式还原中,通过遍历AST并执行路径上的表达式,将复杂表达式替换为简洁形式。在字符串还原部分,通过识别和替换StringLiteral节点的raw属性,将混淆的Unicode或UTF-8编码字符串恢复原样,从而提高代码可读性。
摘要由CSDN通过智能技术生成

js逆向-使用AST技术还原混淆代码

在上一节中,我们介绍了AST相关的基本知识和基础的操作方法,本节中我们就来实际应用这些方法来还原JavaScript混淆后的代码,即反混淆的实现。

由于JavaScript混淆方式多种多样,这里就介绍一些常见的反混淆方案,如表达式还原,字符串还原,无用代码剔除,反控制流平坦化等。

10.1 表达式还原

有时候,我们会看到有一些混淆的JavaScript代码其实就是把简单的东西复杂化,比如说一个布尔常量true,被写成 !![] ; 一个数字,被转化为parseInt加一些字符串的拼接。通过这些方式,一些简单又直观的表达式就被复杂化了。

看下面的这几个例子,代码如下:code2.js

const a = !![];
const b = 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
js逆向AST混淆是一种通过解析和修改JavaScript的抽象语法树(AST)来还原混淆代码的过程。首先,我们需要获取到混淆代码AST表示形式。然后,根据特定的反混淆算法,对AST进行遍历和修改,以还原原始代码的结构和逻辑。在这个过程中,我们可以使用不同的技术和工具来帮助我们完成反混淆任务。 在提供的引用中,涉及了一些对AST进行遍历和修改的代码片段。例如,在引用中,使用了traverse函数来遍历AST,然后通过修改AST节点来进行替换和替换。在引用中,通过迭代和遍历AST,找到变量名和取值方法名,然后将它们替换或删除。在引用中,使用了traverse函数和eval函数来移除赋值表达式和成员表达式。 以上是一些常见的技术和方法,用于js逆向AST混淆。具体的反混淆过程可能因代码结构和混淆方式而有所不同。为了成功反混淆代码,可能需要更多的详细信息和专业知识。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【JavaScript 逆向AST混淆](https://blog.csdn.net/pyzzd/article/details/130613135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Deng872347348

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值