您现在的位置是: 网站首页> 学习笔记> JS逆向 JS逆向
ast规范js for循环,补全大括号
2022-08-09 [JS逆向] [ast] 4128人已围观
尝试使用AST解混淆,发现在js中经常有for循环不加大括号的写法,如:
for (var i=0; i<10086; i++)
console.log(6666666);
这里只是打印输出的一行代码,在js逆向中,经常看到的是for后面接一大堆逗号表达式, 这时间如果我们直接去还原逗号表达式的话很容易出错,所以我们需要先规范一下for循环的写法,即给它加上大括号, 将上述代码转换成如下样子:
for (var i=0; i<10086; i++){
console.log(6666666);
}
需要转换的地方很多,我们不可能手动去做转换,所以借助AST进行还原转换操作, 具体操作如下代码:
const fs = require('fs');
const {parse} = require("@babel/parser");
const traverse = require("@babel/traverse").default;
const types = require("@babel/types");
const generator = require("@babel/generator").default;
let jscode =
`
for (var i=0; i<10086; i++)
console.log(6666666);
`;
// let jscode = fs.readFileSync('./codetest.js',{encoding: 'utf-8'});
let ast = parse(jscode);
const visitor =
{
ForStatement(path)
{
//遍历for语句
const { init, test, update, body } = path.node;
if(types.isBlockStatement(body)){
return;
}
let ss = types.ForStatement(init, test, update, types.blockStatement([body]))
path.replaceWith(ss)
},
}
traverse(ast,visitor);
let {code} = generator(ast);
console.log(code);
******************************************/
输出的结果:
"C:\Program Files\nodejs\node.exe" D:\codes\fm\AST\规范for-while循环.js
for (var i = 0; i < 10086; i++) {
console.log(6666666);
}
Process finished with exit code 0
相关文章
文章评论
添加评论
点击排行
本栏推荐
标签云
热评文章
- django使用qq邮箱发送邮件
- mysql8设置数据库远程连接
- pip修改下载源为国内源
- win10看不到win7共享的文件夹的解决方法
- SQLyog连接 Mysql 8.0.11 报error no.1251- Client does not support authentic...
- 使用Oracel Net Nanager配置Oracle数据库远程访问
- 将anaconda的下载源切换为国内的源
- Python+selenium+firefox设置代理IP
- selenium+firefox+js实现动态设置firefox浏览器代理IP
- scrapy文件下载(高新技术企业认定网)
- Python调用JS代码
- Chrome浏览器的overrides的使用
站点信息
- 建站时间:2021-01-01
- 网站程序:Django 3.1.2
- 文章统计:53篇
- 文章评论:36条
- 统计数据:
#2023-10-12 20:43 @ LIxpJAZNF:
Гў Carol DkVjSoOVrOWaA 5 20 2022 <a href=https://tadalafi.cfd>cialis 5mg best price</a> Penicillamine Lipid lowering agents including statins and HMF CoA reductase inhibitors Anticonvulsants Bacillus Calmette GuГ©rin BCG administration and other immunisations