yardexx/refractor
GitHub: yardexx/refractor
一款针对 Dart kernel 字节码的混淆工具,通过重命名、字符串加密和死代码注入保护代码免受逆向分析。
Stars: 0 | Forks: 0
# Refractor
一个 Dart kernel (`.dill`) 混淆工具。将 Dart 入口文件编译为 kernel 字节码,应用可配置的混淆pass,并输出可执行文件、AOT snapshot、JIT snapshot 或 kernel 文件。
## 功能
- **重命名 (Rename)** — 将类、方法和字段标识符重写为简短且无意义的名称
- **字符串加密** — 将字符串字面量替换为 XOR 编码的字节数组和注入的运行时解码器
- **死代码注入** — 插入不可达分支以阻碍静态分析和反编译器
- **符号映射** — 生成混淆名称到原始名称的 JSON 映射,便于调试
## 安装
```
dart pub global activate --source git https://github.com/yardexx/refractor.git
```
## 快速开始
```
# 1. 生成配置文件
refractor init
# 2. 混淆构建
refractor build
```
这将编译 `lib/main.dart`,应用 `refractor.yaml` 中定义的pass,并将结果输出到 `build/`。
## 命令
### `refractor build`
编译、混淆并构建。
| 标志 | 描述 | 默认值 |
|----------------|----------------------------------------------|-----------------|
| `-i, --input` | Dart 入口文件 | `lib/main.dart` |
| `-o, --output` | 输出目录 | `build` |
| `-t, --target` | 输出格式: `exe`, `aot`, `jit`, `kernel` | `exe` |
```
refractor build --target kernel --output build
```
### `refractor inspect `
打印已编译 `.dill` 文件的树状表示。
```
refractor inspect build/out.dill
refractor inspect --sdk build/out.dill # include dart:* libraries
```
### `refractor init`
生成一个初始 `refractor.yaml`。
```
refractor init
refractor init --output config/refractor.yaml
```
## 配置
在项目根目录下创建一个 `refractor.yaml`。该文件是必需的 —— 如果缺失、为空或格式错误,Refractor 将立即报错终止。
混淆范围始终是当前项目:即匹配 `pubspec.yaml` 中 `name` 的库以及工作目录下的文件。
```
refractor:
symbol_map: symbol_map.json
exclude:
- "**/*.g.dart"
- "**/*.freezed.dart"
verbose: false
passes:
rename:
preserve_main: true
string_encrypt:
xor_key: 0x5A
exclude_patterns:
- "^https://"
dead_code:
max_insertions_per_procedure: 2
```
每个pass的值可以是 `true`(使用默认值启用)、`false`(禁用),或包含特定pass选项的映射。
## 开发
```
dart pub get
dart analyze
dart test
```
## 许可证
MIT。详见 [LICENSE](LICENSE)。
标签:AOT编译, Dart, Dart Kernel, Dill文件, DNS 反向解析, DNS 解析, JIT编译, Linux安全, 代码保护, 代码混淆, 字符串加密, 文档结构分析, 标识符重命名, 死代码注入, 编译器工具, 逆向工程防护, 静态分析对抗