抽取JS语法树的基本模块

1 篇文章 0 订阅
本文介绍了如何使用JS库esprima和escodegen来分析和操作JavaScript语法树。首先,通过安装Node.js和VS Code建立开发环境。接着,安装esprima和escodegen,创建并解析一个简单的JS文件,生成并查看其语法树结构。语法树分为4个主要模块,便于理解和操作。最后,说明利用语法树进行代码混淆和函数抽取等操作的可能性。
摘要由CSDN通过智能技术生成

对于JS,python这类语言在执行的时候都会有一个类似如下的过程:

词法分析--》生成语法树--》编译--》执行

对于JS来说,分析他的语法树就更加容易了,因为他有封装好的库,可以帮助我们方便的提取出来语法树。

要分析它首先得有他的开发环境:

1.安装nodejs,

2.安装VS code,方便调试代码

首先要知道下面两个模块:

 https://github.com/jquery/esprima  可以将源码提取成语法树
 https://github.com/estools/escodegen 语法树还原为源码
具体用法看下面代码:

3.打开VS code ,创建一个nodejs应用,如下:


控制台初始化,生成一个package.json。

4.然后继续安装esprima 和 escodegen。


5.新建index.js文件,test.js 文件,生成test的语法树。


编写index脚本,如下,调试下可以看到语法树已经生成,具体esprima的用法网上有很多,我这里把它转成json,然后看一下它的结构。



然后在线解析一下,清晰多了,整个语法树分为4个模块,也就是4个小的语法树,


具体对照着test看一下应该就非常清晰了。

6.语法树还原成脚本代码。

下图中很明显ast已经被还原成代码了。


7.利用。

在我们抽取出来ast模块后就可以有一些其他的操作了,可以对语法树的一些结构进行替换,修改等,然后就可以进行代码混淆以及函数抽取等等操作了。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值