前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web Spider Babel安装 & Ast抽象语法 - 基本使用

Web Spider Babel安装 & Ast抽象语法 - 基本使用

作者头像
EXI-小洲
发布2023-03-01 11:27:23
4020
发布2023-03-01 11:27:23
举报
文章被收录于专栏:Spider篇Spider篇

文章目录


提示:以下是本篇文章正文内容,下面案例可供参考

一、资源地址

Ast反混淆语法在线网址:https://astexplorer.net Babel官方文档:https://www.babeljs.cn/docs/babel-types#stringliteral Babel中文文档:https://github.com/jamiebuilds/babel-handbook/blob/master/translations/zh-Hans/README.md js逆向-ast混淆还原入门案例(1):https://blog.csdn.net/qq_42748190/article/details/106135484

二、遍历

2.1 树结构遍历模式

深度优先 = 先子后兄 广度优先 = 先兄后子

2.2 案例

在这里插入图片描述
在这里插入图片描述

三、下载安装

使用npm安装,在doc窗口输入命令安装全局模块

  • npm install -g @babel/core
  • npm install -g @babel/parser
  • npm install -g @babel/template
  • npm install -g @babel/traverse
  • npm install -g @babel/types
  • npm install -g @babel/generator
在这里插入图片描述
在这里插入图片描述

四、案例操作

1、下面是可以遍历的对象类型网址:https://www.babeljs.cn/docs/babel-types 2、下面是可以替换value的数据类型网址:https://www.babeljs.cn/docs/babel-types#stringliteral 3、read.js 代码内容;

代码语言:javascript
复制
var a = 1;
var b = 2;

4、案例代码;

代码语言:javascript
复制
/*
* 安装 npm install @babel/core
* */
 
// 引入 将JS源码转换成语法树 模块
var parser = require("@babel/parser");
// 为parser提供模板引擎
var template = require("@babel/template").default;
// 遍历AST
var traverse = require("@babel/traverse").default;
// 操作节点,比如判断节点类型,生成新的节点等
var t = require("@babel/types");
// 将语法树转换为源代码
var generator = require("@babel/generator").default;
// 引入 操作文件 的模块
var fs = require("fs");
//
var path = require('path');
const { parseArgs } = require("util");
 
// 读取js文件的内容
var jscode = fs.readFileSync("read.js", {
    encoding: "utf-8"
});

var ast = parser.parse(jscode);

// 遍历节点,当遇到下列类型的时候会调用函数
var traverses = {
    VariableDeclarator(path) { //需要遍历的对象类型
        //进入该类型后需要进行的一些操作
        console.log("name = " + path.node.id.name);  // 打印当前节点的对象名称;
        console.log("value = " + path.node.init.value);  // 打印当前节点的对象值;
        path.node.init = t.stringLiteral("xiaozhou");  // 将对象的值修改为字符串类型;
        // debugger;  // 下断点
    }
}

traverse(ast, traverses);  // 传入一个ast对象,遍历对象类型操作的function
var result_code = generator(ast);  // 生成对象修改后的代码;
// debugger;
console.log(result_code.code);

fs.writeFile('decoded.js', result_code.code, (err)=>{});  // 输出文件

5、debugger代码分析;

在这里插入图片描述
在这里插入图片描述

6、生成对象修改后的代码;

在这里插入图片描述
在这里插入图片描述

总结

以上就是今天要讲的内容,本文仅仅简单介绍了JS逆向的基本工具。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、资源地址
  • 二、遍历
    • 2.1 树结构遍历模式
      • 2.2 案例
      • 三、下载安装
      • 四、案例操作
      • 总结
      相关产品与服务
      腾讯云代码分析
      腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档