以证据为核心的恶意软件逆向工程,具备深度PE/.NET检查、Ghidra重构、AI交叉验证、YARA及ELF调试能力
以证据为中心的反向工程 CLI。 Andrey Pautov 开发了 Python 分析师界面、离线分诊、字符串情报、PE 检查和报告工作流。Capstone、Ghidra、GDB 以及可选的 AI 提供商属于集成组件,而非本项目原创的工具。
角色相关性: 恶意软件分诊、反向工程工具、安全的 AI 辅助分析、Python 交付。
AIDebug 是一款以证据为中心的恶意软件反向工程 CLI 和终端 UI。 它结合了确定性的离线分诊、全文件十六进制检查、深度 PE 结构分析、Capstone 反汇编、Ghidra 重建、可选的 LLM 交叉验证、本地 ELF 调试、编译式学习练习,以及 分析师审阅报告。
当前源码版本:AIDebug 3.1.0。请参阅 3.1.0 发布说明。
最新的不可变已发布版本仍为 AIDebug v3.0.0, 以
1200km-aidebug形式提供, 直至版本匹配的 3.1.0 标签和 GitHub 发布完成已验证的 发布工作流。
从 PyPI 安装稳定包:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install 1200km-aidebug==3.0.0
aidebug --version
按需安装可选功能:
# Remote/local LLM providers and validated YARA generation
python -m pip install "1200km-aidebug[ai]==3.0.0"
# Frida dynamic instrumentation
python -m pip install "1200km-aidebug[dynamic]==3.0.0"
# All optional Python integrations
python -m pip install "1200km-aidebug[all]==3.0.0"
用于开发:
git clone https://github.com/anpa1200/AIDebug.git
cd AIDebug
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev,dynamic]"
Ghidra、GDB、Bubblewrap、C 编译器和 Frida 目标组件是外部 工具,仅由需要它们的工作流使用。
在主终端界面中打开 PE 或 ELF 样本:
aidebug --binary /path/to/sample.exe --offline
在不使用全屏 UI 的情况下运行确定性分析并导出证据:
aidebug --binary /path/to/sample.exe \
--offline --no-tui --report --json-export --yara \
--out-dir reports/
使用 Ghidra 重建:
aidebug --binary /path/to/sample.exe --offline --no-tui --decompile
aidebug --binary /path/to/sample.exe --offline --no-tui \
--decompile-all reports/sample-reconstruction.c
通过临时、非执行的 ELF 产物分析一个 C 翻译单元:
aidebug --source /path/to/example.c --offline --no-tui
独立于文件扩展名识别任意文件:
aidebug --identify /path/to/renamed-or-unknown-file --offline
--identify 报告结构化 JSON,包含声明类型、MIME 类型、常见
扩展名、置信度、方法、证据、SHA-256 和大小。确定性
覆盖范围包括常见可执行文件和字节码格式、归档和磁盘
映像、Office/OpenDocument/EPUB 容器、文档、图像、音频/视频、
数据包捕获、数据库、注册表/事件日志产物、脚本和文本。
基于 ZIP 的格式通过有界成员名称和小型元数据
读取进行检查;文件绝不会被执行或提取。
安装 python-magic 以及操作系统的 libmagic 数据库,以获取
本地平台已知的额外签名:
python -m pip install python-magic
当没有确定性签名、结构或文本规则匹配时,已配置的
AI 提供商可以根据有界元数据推断候选:扩展名、大小、
SHA-256、最多 96 个头部字节、32 个尾部字节、样本熵和 NUL 比率。
文件正文、提取的字符串和文件系统路径不会被发送。仅 AI
结果标记为 ai-inference,置信度上限为 60%,需要
分析师验证。使用 --offline 完全禁用回退;未
解析的类型报告为 Unknown,退出状态为 2。
在主终端界面中按 S,或直接在工作区中启动:
aidebug --binary /path/to/sample.exe --offline --strings
工作区保留文件偏移、可用时的映射地址、 编码、字节和字符长度、重复出现信息、 节上下文、置信度、分诊分数以及每个分类的确定性 原因。过滤器涵盖最小长度、编码、类别和 自由文本搜索;列排序和分页使大型清单保持可用。 每个选定的编码都会扫描完整的有界大小产物。保留的 清单上限为 25,000 条记录和每个值 4,096 个显示字符; 精确的候选/省略计数和全字节覆盖使任一上限可见。 每条记录最多保留 32 个 DLL/API 注释和 4,096 个描述 字符;对抗性溢出会在记录原因中报告。
检测是多标签的。单个值可以同时是 DLL、Windows
路径、URL、IP 地址、注册表项、命令、PowerShell 片段、命名管道、
哈希、凭据候选、用户代理或其他支持的证据类型。
域候选经过 IDNA 规范化,并与打包的离线
IANA 根区快照进行核对;IP 地址必须占据完整的有效令牌,并且
配置赋值必须匹配保守的整行语法。这
防止短二进制片段仅因包含
点、冒号或等号而被提升。相关标签共享一个置信度家族,因此
ip_address 加 ipv6 不会被视为两个独立观察。
已知 DLL 和 API 会获得简短的中性能力描述;未知
名称会获得明确的未验证回退,而不是猜测的用途。
提取的名称是存在的证据,而非代码调用它或
样本为恶意的证明。
在本地打印确定性清单、过滤显示的 CLI 视图,或 将规范完整清单写为仅所有者可读的 JSON:
aidebug --binary /path/to/sample.exe --strings --no-tui
aidebug --binary /path/to/sample.exe --strings --no-tui \
--string-encoding ascii --min-string-length 6 --string-category url
aidebug --binary /path/to/sample.exe --strings --no-tui \
--strings-output reports/sample-strings.json
AI 字符串审阅是单独的选入操作。在工作区内按 A
并确认隐私/成本警告,或在 CLI 模式下明确请求:
aidebug --binary /path/to/sample.exe --strings --no-tui \
--analyze-strings --accept-ai-cost \
--strings-output reports/sample-strings-ai.json
每个保留的字符串都会被分配一个稳定的证据 ID。在明确
确认后,AI 路径会在确定性、
有界块中规划每条保留记录;提供商或验证失败会安全停止并保持可见。
响应必须说明每个提供的 ID,并
在它们被接受之前通过严格的本地模式、枚举、引用和 IOC 接地验证。
最终归约器看到的是已验证的发现,而非
原始清单。提取限制、失败的批次
以及已审阅/已发送计数始终会被报告;不完整的覆盖会强制
unknown 总体评估。字符串可能包含密码、API 令牌、
客户数据和攻击者编写的提示注入,因此在启用此功能之前请审阅远程 AI
边界。
按文件或 SHA-256 检查先前的分析:
aidebug --history /path/to/sample.exe
aidebug --history 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
加载 PE 文件并在主 GUI 中按 X(或 P)。AIDebug 呈现
它哈希的确切字节,并将结构证据组织为有界、
可导航的视图。
| 区域 | 证据 |
|---|---|
| 头部 | DOS、NT、COFF、可选头、特征、数据目录和缓解标志 |
| 节 | 完整的 IMAGE_SECTION_HEADER 字段、映射范围、熵和权限 |
| 导入和导出 | 导入描述符、INT/IAT 条目、延迟导入、序号、名称、RVA 和转发器 |
| 资源 | 类型/名称/语言层次结构、元数据、哈希、预览和安全的不覆盖导出 |
| 重定位和 ASLR | 重定位块/条目以及结构性 ASLR 兼容性评估 |
| TLS | TLS 目录、模板数据、索引、回调表、映射和终止证据 |
| 异常和展开 | x64 运行时函数、UNWIND_INFO、操作、处理程序和链式记录 |
| 加载配置 | 版本化字段、Guard 标志、栈 cookie 和漏洞利用缓解证据 |
| CFG | 检查/分派指针、Guard Function ID 目标、排序、抑制和一致性检查 |
| Authenticode | 证书记录、PKCS#7/X.509 证据、PE 映像摘要比较和签名者验证 |
| 调试和来源 | Rich 头、调试目录、CodeView RSDS/NB10、PDB GUID、年龄和路径 |
| 覆盖层 | 精确偏移、大小、哈希、熵、预览和安全导出 |
| .NET / CLR | COR20 头、元数据根和流、ECMA-335 表、程序集、引用和资源 |
AIDebug 在构建这些视图时不会执行 PE。静态证书 验证不是 Windows 根信任或吊销验证,Rich 元数据 不是归属,强名称元数据不是发布者信任,静态缓解标志 不是有效运行时策略的证明。
这些文章提供了补充 仓库文档的长篇工作流和截图:
打开完整目录或从特定案例开始:
aidebug --learn
aidebug --learn mov-load
aidebug --learn lea-arithmetic
aidebug --learn switch-dispatch
每个捆绑案例都是 learning/cases/ 下的独立文件。
AIDebug 将选定的案例编译为临时 x86-64 ELF,显示确切的
C 源代码和编译器生成的指令,向 Ghidra 请求独立的
重建,记录构建来源,并删除临时产物。
生成的教学二进制文件绝不会被执行。
使用 --no-tui 获取文本输出,或加载已审阅的外部集合: