This repository has been archived by the owner. It is now read-only.
基于 AST 变换的简易 Javascript 反混淆辅助工具
Switch branches/tags
Nothing to show
Clone or download
Latest commit c447517 Mar 13, 2018
Permalink
Failed to load latest commit information.
lib fix jshint Sep 5, 2017
tests fix #7 Sep 5, 2017
.gitignore more test case Jan 23, 2017
.jshintignore fix coverage test Jan 24, 2016
.jshintrc first public version Aug 5, 2015
.travis.yml fix travis ci Aug 1, 2016
LICENSE first public version Aug 5, 2015
Makefile fix travis ci Aug 1, 2016
README.md Update README.md Mar 13, 2018
cli.js wtf, fix #10 Dec 18, 2017
index.js simplifier api Jan 26, 2016
jsconfig.json add configuration for VSCode Aug 10, 2015
package.json upgrade dependencies to latest Apr 18, 2017
yarn.lock upgrade dependencies to latest Apr 18, 2017

README.md

etacsufbo

experimental Build Status Coverage Status

'obfuscate'.split('').reverse().join('')

一个简易 Javascript 反混淆工具,基于抽象语法树分析和修改实现。

这个工具已废弃。请移步类似工具 https://github.com/mindedsecurity/JStillery

如果您有 PL 的基础,建议阅读和使用 http://prepack.io/

快速上手

git clone https://github.com/ChiChou/etacsufbo.git 下载项目

cd etacsufbo 进入目录

npm i 安装依赖项目

./cli.js path/to/obfuscated/script.js 输出反混淆结果

命令行参考

./cli.js [混淆的代码] [输出文件名]

  • 如省略输出文件名,程序将把清理结果输出到 stdout
  • 如不带参数执行,将进入 REPL 模式
  • 使用 npm link 可将 etacsufbo 命令注册到全局

在代码库中引用

npm install https://github.com/ChiChou/etacsufbo.git 将项目添加为依赖项

require('etacsufbo').clean('your code goes here') 只提供一个 API

代码还原规则

  • 全局变量声明的字符串数组,在代码中直接使用数字下标引用其值
  • 连续的二元运算,如 1 * 2 + 3 / 4 - 6 % 5
  • 正则表达式字面量的 source,字符串字面量的 length
  • 完全由字符串常量组成的数组,其 join / reverse / slice 等方法的返回值
  • 字符串常量的 substr / charAt 等方法的返回值
  • decodeURIComponent 等全局函数,其所有参数为常量的,替换为其返回值
  • 结果为常数的数学函数调用,如 Math.sin(3.14)

TODO

  • 处理作用域
  • 处理自定义加密函数

许可

GPL v3