面向 Claude Code 和 Codex 的恶意二进制分析 Skill,以 IDA Pro 和 IDASQL 为主要分析环境。
它解决的核心问题不是“反编译一个入口函数”,而是:完整发现行为、保留可复现证据、正确描述多文件执行关系,并让不同 Agent 或不同会话从磁盘状态继续工作。
支持两个工作流:
analysis:执行完整、证据驱动的分析。report:从已经验证的 Case 生成最终报告。
- 从入口、回调、函数、字符串、导入、导出、资源、间接调用和 Payload 等独立视角交叉发现功能。
- 使用确定性工作队列、覆盖率门禁和自适应复核减少遗漏,同时避免无意义的重复分析。
- 将 Evidence、Claim、Work Item、Artifact 和 Stage 显式关联,阻止结论串到错误文件或执行阶段。
- 区分不可变字节 Artifact、执行上下文 Stage 和 IDA 分析代次;IDB 重建、重定位或工具升级后旧证据自动过期。
- 记录 Payload 提取与转换血缘,并保留顺序、并行、延迟、条件、循环和未知等真实时序语义。
- 支持 Claude Code 与 Codex 在单写者约束下恢复同一个 Case,不依赖聊天记忆。
- 生成兼顾普通读者与逆向分析人员的报告,并保留正文 Claim 追踪、精确定位、IDA 截图和可编辑 draw.io 图形。
常规发现可用 record-finding 在一个事务中完成 Evidence、Claim 和 Work Item 关联;复杂发现仍可使用底层命令。两条路径执行相同的质量校验。
Skill 采用渐进式加载:
- 普通单文件分析只加载 IDASQL 和基础分析流程。
- 发现新 Payload、多 Artifact、多 Stage 或复杂时序时才加载多阶段规则。
- 恢复长 Case、跨 Agent 交接时才加载上下文协议。
- 进入报告阶段才加载报告追踪和写作规范。
减少的是 Agent 的上下文与手动操作,不是底层质量门禁。
样本 / IDA 数据库
│
▼
身份确认与多视角发现
│
▼
工作队列 → Evidence → Claim
│
├── 字节转换 ──► Artifact 血缘
└── 控制转移 ──► Stage 执行图
│
▼
自适应复核与完成校验
│
▼
按真实时序生成报告
Artifact 是不可变的文件或字节内容;Stage 是 Artifact 在特定入口、进程和触发条件下的一次执行。二者分开建模,避免把文件提取顺序误写成攻击执行顺序。
创建和检查 Case 只需要 Python 3.10+;项目脚本仅使用 Python 标准库。
执行真实分析还需要:
- IDA Pro;
- 可执行
idasql --version的 IDASQL; - 需要反编译时可用的 Hex-Rays Decompiler;
- 报告需要图形时可用的 draw.io 工具或授权 CLI。
推荐安装 IDASQL Skills。IDA 或 IDASQL 不可用时,只能初始化或检查 Case,不能把可执行 Stage 标记为分析完成。
默认优先静态分析。不要在宿主机运行未知样本;调试、仿真或引爆必须经过明确授权并位于隔离环境。未经授权,不得上传样本、哈希或提取内容。
先克隆仓库:
git clone https://github.com/9ith4b/malware-binary-analysis.git
cd malware-binary-analysis开发期间推荐让 Claude Code 和 Codex 链接到同一个 Skill 目录,避免复制版本漂移。
在 PowerShell 中从 Skill 根目录执行:
$SkillSource = (Resolve-Path ".").Path
$ClaudeSkills = Join-Path $env:USERPROFILE ".claude\skills"
$CodexBase = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { Join-Path $env:USERPROFILE ".codex" }
$CodexSkills = Join-Path $CodexBase "skills"
New-Item -ItemType Directory -Force -Path $ClaudeSkills | Out-Null
New-Item -ItemType Directory -Force -Path $CodexSkills | Out-Null
New-Item -ItemType Junction -Path (Join-Path $ClaudeSkills "malware-binary-analysis") -Target $SkillSource
New-Item -ItemType Junction -Path (Join-Path $CodexSkills "malware-binary-analysis") -Target $SkillSourceSKILL_SOURCE="/absolute/path/malware-binary-analysis"
CODEX_SKILLS="${CODEX_HOME:-$HOME/.codex}/skills"
mkdir -p "$HOME/.claude/skills" "$CODEX_SKILLS"
ln -s "$SKILL_SOURCE" "$HOME/.claude/skills/malware-binary-analysis"
ln -s "$SKILL_SOURCE" "$CODEX_SKILLS/malware-binary-analysis"Claude Code 也支持项目级 <project>/.claude/skills/malware-binary-analysis/。无论链接还是复制,目标目录内必须直接包含 SKILL.md、scripts/、references/、assets/ 和 agents/。
python scripts/validate_compatibility.py --skill-root .
python scripts/case_manager.py --help
python scripts/stage_graph.py --help
idasql --version
Linux/macOS 可将 python 替换为 python3。兼容性校验应返回 "valid": true。安装或更新后,启动新的 Claude Code/Codex 会话。
分析样本:
Claude Code: /malware-binary-analysis analysis <sample> [case-root]
Codex: $malware-binary-analysis analysis <sample> [case-root]
生成报告:
Claude Code: /malware-binary-analysis report <case-root>
Codex: $malware-binary-analysis report <case-root>
如果 case-root 已有有效状态,Agent 会恢复现有分析。Case 初始化会将样本复制到 analysis_input/ 并校验 SHA-256;源文件、Case 副本、Artifact 或 IDB 身份变化时,旧证据不会被静默复用。
<case-root>/
├── analysis_input/ # SHA-256 校验的输入副本
├── analysis_raw/ # 笔记、SQL、结果和截图证据
├── analysis_state/ # 工作队列、Claim、Artifact、Stage 和校验状态
├── analysis_extract/ # 提取或重构的 Payload
└── analysis_report/ # 最终报告、截图和 draw.io 图形
报告正文不会显示内部 Claim ID,但 Case 状态会将每条 Claim 映射到唯一正文锚点和段落哈希。正文编辑后必须重新登记映射。
python "<skill-root>/scripts/case_manager.py" status --case-root "<case-root>"
python "<skill-root>/scripts/case_manager.py" lock-status --case-root "<case-root>"
python "<skill-root>/scripts/stage_graph.py" status --case-root "<case-root>"
python "<skill-root>/scripts/stage_graph.py" validate --case-root "<case-root>" --mode analysis
python "<skill-root>/scripts/case_manager.py" validate --case-root "<case-root>" --mode analysis
报告前将两条 validate 命令的 mode 改为 report。详细命令参数使用对应脚本的 --help。
- Claude Code:检查
.claude/skills/malware-binary-analysis/SKILL.md或~/.claude/skills/malware-binary-analysis/SKILL.md。 - Codex:检查
$CODEX_HOME/skills/malware-binary-analysis/SKILL.md;未设置CODEX_HOME时检查~/.codex/skills/。 - 确认没有多嵌套一层同名目录,并确认安装了完整 Skill,而不是只有
SKILL.md。 - 安装后启动新会话。
- Python 依次尝试
python3、python、py -3,要求 3.10+。 - 确认 IDA Pro 与 IDASQL 安装正确并执行
idasql --version。 - 缺少 IDASQL 时不能完成可执行 Stage 分析。
使用校验输出定位问题,不要手工修改状态绕过门禁。常见原因包括:开放工作项、缺少 Evidence/Claim 关联、Stage 图过期、IDB 检查点变化、旧分析代次证据、缺少 Stage 摘要,或报告段落追踪过期。