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绕过, 逆向工具, 逆向工程