VersaNexusIX/DAX

GitHub: VersaNexusIX/DAX

轻量级多架构二进制反汇编与逆向工程工具,支持 ELF/PE 格式的 CFG 和调用图分析,配备交互式 TUI 界面。

Stars: 1 | Forks: 0

# DAX — DisAssembler eXtended


   ██████╗   █████╗ ██╗  ██╗

   ██╔══██╗ ██╔══██╗╚██╗██╔╝

   ██║  ██║ ███████║ ╚███╔╝

   ██║  ██║ ██╔══██║ ██╔██╗

   ██████╔╝ ██║  ██║██╔╝ ██╗

   ╚═════╝  ╚═╝  ╚═╝╚═╝  ╚═╝

  

使用 C 和 Assembly 编写的多架构二进制反汇编与逆向工程工具

GitHub · 架构 · API 参考 · 贡献指南

## 概述 DAX 是一个轻量级、可移植的二进制反汇编和逆向工程工具,目标格式包括 **ELF** (Linux, Android, BSD, UNIX) 和 **PE** (Windows) 二进制格式。它支持 **x86\_64**、**ARM64/AArch64** 和 **RISC-V 64** 架构的指令解码,并包含完整的分析流水线,涵盖 CFG 构建、循环检测、调用图、交叉引用以及交互式 TUI。 版本:**3.0.0** | 许可证:**BSD 2-Clause** ## 功能特性 ### 反汇编 - 反汇编 ELF32, ELF64, PE32 和 PE64+ 二进制文件 - x86\_64 指令解码器 — REX 前缀、ModRM、SIB、1/2 字节操作码、所有主要组 - ARM64/AArch64 指令解码器 — 所有主要编码组 - RISC-V 64 指令解码器 — 包括压缩 (C) 扩展 - 自动检测 OS/ABI: Linux, Android, BSD, UNIX, Windows - 仿 `objdump`/`ndisasm` 风格的 ANSI 彩色输出 - 按节名或地址范围过滤 - 在指令旁显示原始十六进制字节 ### 分析 | 标志 | 功能 | |------|---------| | `-y` | 符号解析 (symtab / dynsym / PE exports) | | `-d` | C++ Itanium ABI 反修饰 (demangling) | | `-f` | 函数边界检测 | | `-g` | 指令组着色 (call/branch/ret/arith…) | | `-r` | 交叉引用 (xref) 注解 | | `-t` | 来自 `.rodata` 的字符串引用注解 | | `-C` | 控制流图 (基本块 + 边) | | `-L` | 通过自然循环 / 支配树 进行循环检测 | | `-G` | 调用图 (谁调用谁的树状图) | | `-W` | Switch/跳转表 检测 | | `-x` | 启用上述所有分析功能 | ### 交互式 TUI (`-i`) 用于交互式逆向工程会话的内置终端 UI: | 按键 | 动作 | |-----|--------| | `j` / `k` / `↑↓` | 导航指令 | | `/` | 搜索助记符或操作数 | | `.` | 重复上次搜索 | | `:` | 跳转到地址 | | `r` | 重命名符号 | | `c` | 添加注释 | | `n` / `p` | 下一个 / 上一个函数 | | `C` | 显示当前函数的 CFG | | `o` | 保存会话为 `.daxc` | | `?` / `h` | 帮助 | ### 会话文件 (`.daxc`) 以二进制 `.daxc` 格式保存和恢复完整的分析快照 —— 符号、CFG 块、xref、注释。使用 `-c` 将 `.daxc` 转换回带有注释的 `.S` 汇编文件。 ## 快速开始 ``` # 基本反汇编 dax ./binary # 完整分析 dax -x ./binary # 完整分析 + 保存 snapshot dax -x -o analysis.daxc ./binary # 将 snapshot 转换为带注释的汇编 dax -c analysis.daxc # 交互式 RE 会话 dax -i -x ./binary # 反汇编特定 section 并显示 hex bytes dax -s .plt -a ./binary # 按地址范围过滤 dax -A 0x401000 -E 0x402000 ./binary # 列出所有 section dax -l ./binary # 无颜色 (用于管道传输) dax -n ./binary > output.txt ``` ## 构建 **Linux / BSD / UNIX / macOS / Android (自动检测):** ``` make ``` **安装到 `/usr/local/bin/`:** ``` make install ``` **Windows (MinGW):** ``` gcc -O2 -Wall -I./include -std=c99 -DOS_WINDOWS \ src/main.c src/loader.c src/disasm.c \ src/x86_decode.c src/arm64_decode.c \ -o dax.exe ``` **Windows (MSVC):** ``` cl /O2 /I include /DOS_WINDOWS \ src\main.c src\loader.c src\disasm.c \ src\x86_decode.c src\arm64_decode.c \ /Fe:dax.exe ``` ## 支持的平台 | 平台 | 架构 | 汇编桩 (Assembly Stub) | |----------|------|---------------| | Linux | x86\_64 | `arch/x86_64_linux.S` | | Linux / Android | ARM64 | `arch/arm64_linux.S` | | BSD (Free/Open/Net/macOS) | x86\_64 | `arch/x86_64_bsd.S` | | BSD (Free/Open/Net/macOS) | ARM64 | `arch/arm64_bsd.S` | | Windows (MinGW/MSVC) | x86\_64 | `arch/x86_64_windows.asm` | | Windows | ARM64 | `arch/arm64_windows.asm` | | Android (NDK/Termux) | ARM64 / x86\_64 | 自动选择 | ## 项目结构 ``` DAX/ ├── include/ │ ├── dax.h # Main header — structs, constants, function prototypes │ ├── x86.h # x86_64 decoder definitions │ ├── arm64.h # ARM64 decoder definitions │ ├── riscv.h # RISC-V decoder definitions │ ├── elf.h # ELF32/ELF64 structs │ └── pe.h # PE32/PE64 structs ├── src/ │ ├── main.c # Entry point, CLI, banner │ ├── loader.c # Binary loading, ELF/PE parsing │ ├── disasm.c # Disassembler engine, print loop │ ├── x86_decode.c # x86_64 instruction decoder │ ├── arm64_decode.c # ARM64 instruction decoder │ ├── riscv_decode.c # RISC-V 64 instruction decoder │ ├── symbols.c # Symbol table loading & lookup │ ├── demangle.c # C++ Itanium ABI demangler │ ├── analysis.c # Instruction classification & group colors │ ├── cfg.c # Control flow graph builder │ ├── callgraph.c # Call graph builder & printer │ ├── loops.c # Loop detection (natural loops, dominators) │ ├── daxc.c # .daxc format read/write + comments │ ├── interactive.c # Interactive TUI (RE mode) │ └── correct.c # Correction/suggestion utilities ├── arch/ │ ├── x86_64_linux.S │ ├── arm64_linux.S │ ├── x86_64_bsd.S │ ├── arm64_bsd.S │ ├── x86_64_windows.asm │ └── arm64_windows.asm ├── Makefile └── README ``` ## 文档 - [构建 DAX](docs/BUILDING.md) — 特定平台的构建说明 - [架构概览](docs/ARCHITECTURE.md) — 内部设计和数据流 - [API 参考](docs/API.md) — 公共 C API 和数据结构 - [贡献指南](docs/CONTRIBUTING.md) — 贡献指南 ## 许可证 DAX 基于 **BSD 2-Clause 许可证** 发布 — 可免费使用、修改和分发。

https://github.com/VersaNexusIX/DAX

标签:AArch64, Android, ARM64, BSD, DSL, ELF, LangChain, PE, RISC-V, RISC-V压缩指令集, TUI, x86_64, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 反汇编器, 客户端加密, 开源, 循环检测, 恶意代码分析, 指令解码, 控制流图, 数据挖掘, 汇编, 符号解析, 自动回退, 调用图, 轻量级, 逆向工程, 配置文件, 静态分析