Skip to content

JavaScriptAST

JavaScript 抽象语法树相关的理论知识和实战教程索引,帮助各位工程师掌握 AST 相关知识点和技术应用。

本文github地址:https://github.com/NightTeam/JavaScriptAST

https://astexplorer.net/

https://resources.jointjs.com/demos/rappid/apps/Ast/index.html

Babel: https://github.com/jamiebuilds/babel-handbook/blob/master/translations/zh-Hans/user-handbook.md

Esprima: https://esprima.org/

Acorn: https://github.com/acornjs/acorn

UglifyJS: http://lisperator.net/uglifyjs/

AST 还原 obfuscator 混淆

操作AST还原混淆代码基础系列课程三:十六进制字符串还原

操作AST还原混淆代码:让代码分析变得如此简单

AST实战:全自动解密经obfuscator混淆的加密字符串

操作AST还原混淆代码课程九:还原简单的CallExpression 类型

序号类型原名称中文名称描述
1Program程序主体整段代码的主体
2VariableDeclaration变量声明声明一个变量,例如 var let const
3FunctionDeclaration函数声明声明一个函数,例如 function
4ExpressionStatement表达式语句通常是调用一个函数,例如 console.log()
5BlockStatement块语句包裹在 {} 块内的代码,例如 if (condition){var a = 1;}
6BreakStatement中断语句通常指 break
7ContinueStatement持续语句通常指 continue
8ReturnStatement返回语句通常指 return
9SwitchStatementSwitch 语句通常指 Switch Case 语句中的 Switch
10IfStatementIf 控制流语句控制流语句,通常指 if(condition){}else{}
11Identifier标识符标识,例如声明变量时 var identi = 5 中的 identi
12CallExpression调用表达式通常指调用一个函数,例如 console.log()
13BinaryExpression二进制表达式通常指运算,例如 1+2
14MemberExpression成员表达式通常指调用对象的成员,例如 console 对象的 log 成员
15ArrayExpression数组表达式通常指一个数组,例如 [1, 3, 5]
16NewExpressionNew 表达式通常指使用 New 关键词
17AssignmentExpression赋值表达式通常指将函数的返回值赋值给变量
18UpdateExpression更新表达式通常指更新成员值,例如 i++
19Literal字面量字面量
20BooleanLiteral布尔型字面量布尔值,例如 true false
21NumericLiteral数字型字面量数字,例如 100
22StringLiteral字符型字面量字符串,例如 vansenb
23SwitchCaseCase 语句通常指 Switch 语句中的 Case