对于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模块后就可以有一些其他的操作了,可以对语法树的一些结构进行替换,修改等,然后就可以进行代码混淆以及函数抽取等等操作了。