Downloads · 30 days
0
JayCh0u/DartDec
DartDec is a machine learning model from JayCh0u. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
DartDec 是一个面向真实 Flutter Android 应用的逆向重构项目,目标是将 Flutter AOT 产物中提取出的结构化中间语言(Intermediate Language, IL)恢复为更接近原始工程的 Dart 源代码。项目围绕“IL 片段到 Dart 源码”的语义对齐展开,结合 Qwen2.5-Coder 的 LoRA 微调模型、片段级生成、文件级重组和 Dart-CodeBLEU 结构评估,提供一套可复现…
Downloads · 30 days
0
Access
Public
Updated May 5, 2026
Repo size
1.9 GB
Likes
2
Trending 1
Click a slice to open those files.
.safetensors1.7 GB · 91%
From the Hugging Face model README
DartDec 是一个面向真实 Flutter Android 应用的逆向重构项目,目标是将 Flutter AOT 产物中提取出的结构化中间语言(Intermediate Language, IL)恢复为更接近原始工程的 Dart 源代码。项目围绕“IL 片段到 Dart 源码”的语义对齐展开,结合 Qwen2.5-Coder 的 LoRA 微调模型、片段级生成、文件级重组和 Dart-CodeBLEU 结构评估,提供一套可复现的训练与实验材料。
本仓库整理的是论文项目的 Hugging Face 上传版本,包含训练数据、训练脚本、实验复现脚本、两个最终 LoRA adapter、端到端项目源码/模型输出,以及 Dart-CodeBLEU 所需的 tree-sitter Dart 解析器记录。
DartDec 的输入不是直接的机器码,而是 Flutter AOT 逆向工具导出的结构化 IL。项目先构建 Dart-IL 对齐样本,用于训练模型学习 IL 操作模式与 Dart 语法结构之间的映射;随后在真实应用上对片段级模型输出进行文件级 reassembly,恢复 import、类/函数顺序和整体代码结构;最后使用 Dart-CodeBLEU、补充结构指标和 LLM-as-a-Judge 对重构结果进行评估。
论文实验中,DartDec 在 10 个真实 Flutter 开源应用上的平均 Dart-CodeBLEU 为:
| 方法 | 平均 Dart-CodeBLEU |
|---|---|
| DartDec-32B | 0.5488 |
| DartDec-7B | 0.4937 |
| IDA+LLM baseline | 0.3569 |
更完整的实验表格见 experiments/tables.md。
DartDec/
README.md
requirements.txt
data/
aligned_4096/ # Dart-IL 对齐训练/验证/测试数据
e2e_projects/ # 10 个端到端项目的原始 Dart 源码和模型输出源码
models/
qwen25-coder-lora-7b/ # Qwen2.5-Coder 7B 的最终 LoRA adapter
qwen25-coder-lora-32b/ # Qwen2.5-Coder 32B 的最终 LoRA adapter
src/
training/ # LoRA 微调相关脚本
experiments/ # 端到端、消融、RQ3、CodeBLEU、LLM judge 复现实验脚本
tree_sitter_dart/ # Dart-CodeBLEU 使用的 tree-sitter Dart 解析器记录
experiments/
tables.md # 论文实验结果整理表格
data/aligned_4096/ 包含清洗后的 Dart-IL 对齐数据,按训练、验证、测试划分保存为 JSONL。每条样本用于训练模型从 IL 片段恢复 Dart 源代码。
data/e2e_projects/ 只包含 Dart 文件,不包含 JSON/JSONL。每个项目的结构如下:
<project>/
original/
lib/ # 原 Flutter 项目的 Dart 源码
model_outputs/
DartDec-7B/ # 7B LoRA 模型恢复出的 Dart 文件
DartDec-32B/ # 32B LoRA 模型恢复出的 Dart 文件
这部分用于端到端重构结果查看、人工检查和应用级指标计算。
models/qwen25-coder-lora-7b/ 和 models/qwen25-coder-lora-32b/ 分别保存两个最终 LoRA adapter。目录中只保留最终 adapter 与 tokenizer/训练配置相关文件,不包含历史 checkpoint。
使用时需要先加载对应的 Qwen2.5-Coder 基座模型,再加载本仓库中的 LoRA adapter。
src/training/ 保留微调必要脚本,包括 7B/32B 训练入口、继续训练入口、超参数配置和 JSONL 转换工具。
src/experiments/ 保留论文实验复现所需的精简代码,包括:
早期测试脚本、日志、原始指标 CSV、图片、备份输出和 checkpoint/trend 分析脚本未纳入本上传目录。
src/tree_sitter_dart/ 记录 Dart-CodeBLEU 评估使用的 Dart parser。该部分基于社区项目 https://github.com/UserNobody14/tree-sitter-dart 进行整理,因为官方 tree-sitter 语法集合不直接提供 Dart 支持。
仓库中保留了复现结构解析所需的 grammar、parser 源码和必要配置;不包含 .git/、node_modules/、build/ 等本地缓存或构建产物。
安装依赖可从 requirements.txt 开始。实验脚本来自本地研究环境,部分路径以 /path/to/DartDec、/path/to/output 等占位形式保留;重新运行前需要替换为当前机器上的实际路径、基座模型路径和输出目录。
涉及 API 调用的实验脚本通过环境变量读取配置,例如 OPENAI_API_KEY、OPENROUTER_API_KEY 和 OPENAI_BASE_URL。上传内容中不包含真实 API key。
本仓库适合用于: