avarshvir/FABX
GitHub: avarshvir/FABX
FABX 是一款 AI 驱动的逆向工程工具,利用本地大模型对可执行文件、机器学习模型、数据库和结构化文件进行智能分析与可视化解读。
Stars: 0 | Forks: 0
# FABX
FABX 是一款 AI 驱动的逆向工程和文件智能分析工具。它旨在处理复杂文件,例如可执行文件、机器学习模型、数据库和结构化数据文件,从中提取有用的技术结构,绘制可视化图谱,并通过 Ollama 使用本地 LLM 来解释其内部运作方式。
FABX 的目标很简单:将难以阅读的软件工件转化为可读的情报。
FABX 不仅仅显示原始字节、表格、张量或汇编代码,而是试图回答以下实际问题:
- 这是什么类型的文件?
- 其内部存在怎样的结构?
- 可以恢复哪些函数、层、表、键或对象?
- 可以看出哪些隐藏模式或可疑细节?
- 原始的源代码或设计可能是什么样的?
- 如何向开发者、分析师或研究人员清晰地解释这些内容?
## FABX 支持的范围
当前代码库中的分析器路由支持:
- 可执行文件检测:`.exe`、`.dll`、`.elf`、`.so`、`.bin`
- SQLite 数据库:`.db`、`.sqlite`、`.sqlite3`
- 机器学习模型:`.onnx`、`.pt`、`.pth`、`.pkl`、`.joblib`
- 结构化/配置文件:`.json`、`.yaml`、`.yml`、`.ini`、`.toml`
FABX 旨在扩展支持更多可执行文件和模型格式,包括 Python 可执行文件、Java 可执行文件、其他编译型语言、Web 语言打包文件、TensorFlow 格式、GGUF 模型等。
## 核心理念
FABX 会检测上传的文件类型,将其发送到正确的分析器,构建结构化结果,生成图表,然后要求本地 LLM 对结果进行解释。
```
flowchart TD
A[User uploads file] --> B[FABX file detector]
B --> C{File type}
C -->|Executable| D[Executable analysis route]
C -->|ML model| E[ML model analyzer]
C -->|Database| F[Database analyzer]
C -->|JSON or config| G[Structured file analyzer]
D --> H[Structured analysis result]
E --> H
F --> H
G --> H
H --> I[Plotly and NetworkX visualizations]
H --> J[Compact prompt builder]
J --> K[Ollama local LLM]
K --> L[AI explanation and reconstruction notes]
I --> M[FABX NiceGUI interface]
L --> M
```
## 可执行文件逆向工程
对于可执行文件,FABX 旨在使用无头模式的 Rizin 作为逆向工程后端。可执行文件路由会检测 `.exe`、`.dll`、`.elf`、`.so` 和 `.bin` 等文件,然后将它们引导至二进制分析流程。
预期的可执行文件工作流如下:
```
flowchart TD
A[Executable file] --> B[File type detection]
B --> C[Headless Rizin]
C --> D{Recovered view}
D -->|Decompiler available| E[Decompiled C-like code]
D -->|Disassembly| F[ASM instructions]
D -->|Raw bytes| G[HEX view]
E --> H[LLM analysis through Ollama]
F --> H
G --> H
H --> I[Hidden pattern detection]
H --> J[Behavior explanation]
H --> K[Possible original C or C++ reconstruction]
H --> L[Graphs and reports]
```
AI 重建步骤属于尽力而为。由于编译后的可执行文件通常会丢失原始变量名、注释、格式和部分类型信息,FABX 可能会重命名变量并生成近似的 C 或 C++ 代码。生成的代码应被视为具有可读性的重建结果,而不是保证完全还原的原始源代码。
在此代码库快照中,系统会检测可执行文件并将其路由到 `exe_analyzer`。基于 Rizin 的深度提取是完整可执行文件工作流应采用的引擎。
## 机器学习模型分析
FABX 可以分析机器学习模型文件,并尽可能提取结构细节。
当前代码中支持的模型格式包括:
- ONNX:`.onnx`
- PyTorch:`.pt`、`.pth`
- 基于 Pickle 的模型:`.pkl`
- Joblib 模型:`.joblib`
模型分析器可以报告:
- 模型格式
- 输入与输出
- 层和算子
- 权重和偏置形状
- 参数数量
- 可恢复时的激活层
- Checkpoint 键
- Pickle opcode 摘要
- 针对加载时可能执行代码的格式的安全警告
随后,FABX 会构建模型可视化图表,并要求 Ollama 解释模型结构,并在条件允许时描述可能生成该模型的代码。
```
flowchart TD
A[ML model file] --> B[Model format detection]
B -->|ONNX| C[ONNX graph inspection]
B -->|PyTorch| D[State dict and module inspection]
B -->|Pickle or Joblib| E[Safe metadata inspection]
C --> F[Layers, operators, tensors, parameters]
D --> F
E --> F
F --> G[Model graphs and charts]
F --> H[Ollama explanation]
H --> I[Architecture summary]
H --> J[Possible training or model code reconstruction]
```
## 数据库分析
对于 SQLite 数据库,FABX 会以只读模式打开数据库并提取 schema 信息。
数据库分析包括:
- SQLite 元数据
- 表和列
- 数据类型
- 主键
- 外键
- 索引
- 视图
- 触发器
- 行数统计
- 示例行
- 关系映射图
```
flowchart TD
A[SQLite database] --> B[Read-only SQLite connection]
B --> C[Schema extraction]
C --> D[Tables and columns]
C --> E[Keys and indexes]
C --> F[Views and triggers]
C --> G[Sample rows]
D --> H[ER graph]
E --> H
F --> I[Security and behavior notes]
G --> J[AI explanation]
```
## JSON 和结构化文件分析
FABX 还支持结构化文件,如 JSON、YAML、INI 和 TOML。这些文件会被解析为结构化数据并进行摘要处理。
结构化文件分析包括:
- 顶层键
- 嵌套深度
- 对象数量
- 数组数量
- 标量数量
- 区段名称
- 键数量
- 文本预览
- 树状可视化
```
flowchart TD
A[JSON, YAML, INI, or TOML file] --> B[Parser]
B --> C[Structure statistics]
B --> D[Content preview]
C --> E[Tree graph]
D --> F[Ollama explanation]
E --> G[FABX report]
F --> G
```
## AI 层
FABX 使用 Ollama 进行本地 AI 解释。LLM 不会直接接收上传的原始文件。相反,FABX 会发送紧凑的结构化分析器输出,这使得 prompt 更小且易于审查。
AI 层可以:
- 解释被分析的文件
- 总结重要发现
- 突出显示安全提示
- 生成文档风格的报告
- 描述可能的行为
- 在有足够证据时,建议可能的原始 C/C++ 代码或模型构建代码
如果 Ollama 不可用,FABX 将显示确定性的备用解释。
## 可视化
FABX 使用 NetworkX 图数据生成交互式 Plotly 可视化图表。
可用的可视化包括:
- 数据库 ER 关系图
- 数据库表-列关系图
- ONNX 计算图
- ONNX 算子分布图
- PyTorch 推断层结构图
- PyTorch 参数图
- JSON/配置树状图
- 摘要指标图表
## 项目结构
```
fabx/
|-- app.py
|-- ai/
| |-- __init__.py
| `-- ollama_client.py
|-- backend/
| |-- __init__.py
| |-- analyzer.py
| |-- detector.py
| `-- visualization.py
|-- frontend/
| |-- __init__.py
| `-- nicegui_app.py
|-- test_files/
| |-- example.db
| `-- test.json
|-- requirements.txt
|-- README.md
`-- LICENSE
```
## 安装说明
创建虚拟环境:
```
python -m venv venv
```
激活环境:
```
venv\Scripts\activate
```
在 macOS 或 Linux 上:
```
source venv/bin/activate
```
安装依赖项:
```
pip install -r requirements.txt
```
## 运行 FABX
从项目根目录启动应用程序:
```
python app.py
```
然后打开:
```
http://127.0.0.1:8080
```
## 可选的 Ollama 配置
FABX 可以在没有 Ollama 的情况下运行,但本地 AI 解释功能需要安装 Ollama 并至少配置一个本地模型。
启动 Ollama:
```
ollama serve
```
拉取模型:
```
ollama pull llama3.1
```
再次运行 FABX:
```
python app.py
```
## 命令行分析器
你也可以直接运行后端分析器:
```
python backend/analyzer.py test_files/test.json
```
对于需要深度加载的受信任 PyTorch、Pickle 或 Joblib 文件:
```
python backend/analyzer.py path/to/model.pkl --unsafe-load
```
请仅对你信任的文件使用 `--unsafe-load`。Pickle 风格的格式在加载过程中可能会执行代码。
## 重要安全提示
- 仅分析你拥有或被授权检查的文件。
- 将 AI 生成的源码重建结果视为近似内容。
- 编译后的可执行文件通常无法恢复原始变量名和注释。
- Pickle、Joblib 和部分 PyTorch 文件在反序列化时可能存在安全风险。
- 仅对受信任的文件使用 `--unsafe-load`。
- 可执行文件逆向工程应仅用于防御性研究、教育、互操作性以及授权分析。
## 路线图
FABX 正向更广泛的软件逆向工程支持方向发展:
- 针对可执行文件的全面无头 Rizin 集成
- 类 C 反编译输出、ASM 输出和 HEX 输出
- 控制流和调用图
- 可疑 API 和行为检测
- Python 可执行文件分析
- Java 可执行文件分析
- Web 打包文件和脚本分析
- 更多 ML 格式,如 TensorFlow 和 GGUF
- AI 辅助代码重建
- 可导出报告
- 项目工作区和批量分析
## 作者
由 **Arshvir** 开发
`AI Researcher | Software Engineer`
```专为逆向工程师、软件工程师、安全研究员、AI 研究人员、学生以及任何探索复杂软件工件的人而构建。```
## 开源许可
FABX 基于 GNU Affero General Public License v3.0 发布。详情请参阅 [LICENSE](LICENSE)。
标签:AI风险缓解, Cloudflare Workers, CNCF毕业项目, SOC Prime, 云资产清单, 人工智能, 凭据扫描, 开发工具, 文件分析, 本地大模型, 特权检测, 用户模式Hook绕过, 逆向工具, 逆向工程