{{format('0')}} {{format('491')}} {{format('755')}}

【AST 还原】三、还原 unicode 与 十六进制 字符串 [ 编程杂谈 ]

大数据男孩 文章 正文

想做一个技术博客,奈何实力不够
分享

明妃

{{nature("2022-08-14 17:23:21")}}更新

例子

// 还原前
((arr, nums) => {
  while (--nums) {
    arr["\x70\x75\x73\x68"](arr["\x73\x68\x69\x66\x74"]());
  }
})(arr, arr["\x6c\x65\x6e\x67\x74\x68"]);

// 还原后
((arr, nums) => {
  while (--nums) {
    arr["push"](arr["shift"]());
  }
})(arr, arr["length"]);

思路

unicode 与 十六进制 处理比较简单,只需要在 ast 转换成 代码时,加上几个参数就行

是否通用:是

const js_code = fs.readFileSync("./input/code.js", {encoding: "utf-8"})
let ast = parser.parse(js_code) // 代码转化为 ast
// 还原 unicode 与 十六进制
let decode = generator(ast, {minified: true, jsescOption: {minimal: true}}).code // 这里一键还原了 unicode 与 十六进制,但是代码是 的
decode = generator(parser.parse(decode)).code // 再转一次 为了使代码格式化
fs.writeFile("./output/code.js", decode, (err => {
}))
评论 0
0
{{userInfo.data?.nickname}}
{{userInfo.data?.email}}
TOP 2
Spark 2.0 单机模式与集群模式 安装

{{nature('2020-01-02 16:47:07')}} {{format('12519')}}人已阅读

TOP 3
Office 2016 Pro Plus 激活

{{nature('2019-12-11 20:43:10')}} {{format('9408')}}人已阅读

TOP 4
Linux上 MySQL 开启远程登陆的两种方法

{{nature('2019-12-26 17:20:52')}} {{format('7401')}}人已阅读

TOP 5
Linux 安装 MySQL 5.7

{{nature('2019-12-26 16:03:55')}} {{format('4878')}}人已阅读

目录

标签云

AST进阶 AST还原

一言

# {{hitokoto.data.from || '来自'}} #
{{hitokoto.data.hitokoto || '内容'}}
作者:{{hitokoto.data.from_who || '作者'}}
自定义UI
配色方案

侧边栏