AST学习入门

AST学习入门

1.AST在线解析网站
https://astexplorer.net/

img

1.type: 表示当前节点的类型,我们常用的类型判断方法t.is********(node)**,就是判断当前的节点是否为某个类型。

2**.start**:表示当前节点的开始位置

3.end:当前节点结束

4.loc : 表示当前节点所在的行列位置,里面也有start与end节点,这里的start与上面的start是不同的,这里的start是表示节点所在起始的行列位。置,而end表示的是节点所在末尾的行列位置

**注:**重点关注type,start,end以及它的子节点,其他属性一般还原的时候用不到

console. log(“Hello,AST!”);

它是一个 ExpressionStatement类型的节点,可以看成是一个表达式块,大家多多解析就明白了,这个节点一定会有一个 expression 的子节点,所以我们在构造节点的时候,只需构造它必有的节点即可。至于start,end以及loc,babel会帮你自动处理好。

这里 expression节点的类型是 CallExpression,它同时又包含了callee和arguments两个子节点,callee可以理解为函数名,而 arguments 则是它的参数。

callee 节点包含了object,property和computed节点,object表示对象,property表示其属性,而computed表示其方式。

arguments 节点,是一个Array类型,因此单词是复数形式。在这里它只有一个元素,说明该函数只有一个实参,实参是一个 StringLiteral类型的节点,也就是字面量。

1.安装babel

npm install @babel/core --save-dev

利用AST解混淆先导知识:简单介绍path和node

https://mp.weixin.qq.com/s/vd3u-JM_QVFZRVpMB-ZYkw

  • let用于声明变量,用法与var类似

  • const用于声明常量:

    与变量不同,常量是一个恒定的值,只读,不可修改
    在这里插入图片描述

2.js代码转语法树

读取js文件

const fs = require("fs")
let jscode = fs.readFileSync(encode_file, {encoding: "utf-8"});

将JavaScript代码,转成AST语法树

const parser = require("@babel/parser");
const fs = require("fs");
file_name = "c.js"
var js = fs.readFileSync(file_name,"utf-8");
var ast = parser.parse(js);
console.log(JSON.stringify(ast,null," "));

其中c.js文件是要解析成语法树的文件

function A(a,b) {
    c = a + b;
    console.log(c)
    }
A(111,222)

解析完可以发现和https://astexplorer.net/解析基本一致

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AST混淆还原是指通过对JavaScript代码的抽象语法树(AST)进行还原,来反混淆经过混淆处理的代码。AST混淆还原入门可以通过以下几个步骤实现: 1. 了解抽象语法树(AST):抽象语法树是用于表示代码结构的一种数据结构。它将代码转换为树状结构,每个节点代表代码的不同部分。了解AST的基本概念和节点类型对于进行混淆还原非常重要。 2. 学习JavaScript语法:要进行AST混淆还原,需要对JavaScript的语法有一定的了解。熟悉JavaScript的语法规则和常见的代码结构将有助于理解和还原混淆代码。 3. 使用AST还原工具:在进行AST混淆还原时,可以使用一些开源的AST还原工具,如丁仔大佬的AST还原工具。这些工具可以将混淆后的代码转换为AST,然后通过对AST进行分析和还原,最终得到可读性较高的代码。 4. 学习AST还原技术:了解AST还原的原理和技术对于深入理解和应用AST还原工具非常重要。可以学习一些AST还原的基本技术,如遍历AST、修改AST节点等,以及一些高级的AST还原技术,如模式匹配、符号执行等。 5. 实践与练习:通过实践与练习,逐渐提升对AST混淆还原的理解和技巧。可以选择一些混淆代码进行还原,尝试使用AST还原工具进行还原,并对还原结果进行分析和验证。 需要注意的是,AST混淆还原是一个复杂的过程,对于不同的混淆代码可能会有不同的还原策略和技术。因此,除了入门的基础知识外,还需要不断学习和积累经验,才能在实际应用中取得更好的效果。<span class="em">1</span> #### 引用[.reference_title] - *1* [AST反混淆js还原工具2.2(20230203)](https://download.csdn.net/download/jia666666/87413335)[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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值