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安全, 代码保护, 代码混淆, 字符串加密, 文档结构分析, 标识符重命名, 死代码注入, 编译器工具, 逆向工程防护, 静态分析对抗