# Elf Analyzer

> Linux ELF 二进制格式深度分析。覆盖 ELF 结构解析(header/program/section)、 安全特征评估(RELRO/Canary/NX/PIE/seccomp)、静态反汇编、动态调试、加壳检测与脱壳。 当用户提供 ELF/.so 文件并请求分析、triage、安全评估时触发。

- Skill: `forceinjection/elf-analyzer` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add forceinjection/elf-analyzer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/forceinjection/elf-analyzer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ForceInjection (https://skillmd.com/u/forceinjection)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/forceinjection/elf-analyzer

---


# ELF Analyzer — ELF 格式深度分析

Linux ELF 二进制文件的格式分析专项技能。采用六阶段工作流 + 条件路由架构，
从取样到安全态势报告的完整链路。聚焦于 ELF 结构本身的分析，而非漏洞利用。

## Safety Warning

> **Warning**: 二进制分析仅应在隔离实验环境或一次性 VM 中进行。
> 切勿在个人设备或生产服务器上执行动态分析。
> 执行动态分析（Phase 3）前必须获得用户明确授权。

## Trigger Conditions

- 提供了 ELF 文件、.so 共享库的路径
- 请求分析/triage 某个 Linux 二进制
- 询问 ELF 结构、安全特征、加壳检测相关问题
- 作为其他技能（linux-pwn、binary-reverse）的前置分析步骤

## Tool Discovery

```bash
command -v file readelf objdump nm strings xxd hexdump python3 checksec \
  radare2 rabin2 r2 gdb strace ltrace objcopy upx \
  analyzeHeadless capa \
  ldd lddtree scanelf execstack dumpelf eu-readelf 2>/dev/null | sort

# 关键后备链
# readelf 不可用 → python3 -c "import struct; ..." 手动解析
# objdump 不可用 → radare2 → llvm-objdump → python3 capstone
# checksec 不可用 → readelf -l (GNU_STACK) + readelf -d (BIND_NOW)
# ldd 不可用(或不安全) → readelf -d | grep NEEDED
# Ghidra 不可用 → radare2 + r2ghidra → objdump + 手工分析
```

## Adjacent Skills

| 技能             | 何时切换                                                                                    |
| ---------------- | ------------------------------------------------------------------------------------------- |
| `binary-reverse` | ELF triage 完成后需要：反汇编模式识别、密码学算法定位、反分析绕过、Go/Rust/C++ 语言专项分析 |
| `linux-pwn`      | 安全态势评估完成后需要：漏洞利用开发、堆利用、ROP 链、格式化字符串攻击、内核提权            |

## Workflow Engine

### Phase 0: Intake

1. 保存原始样本副本到 `case/00-intake/`
2. 计算哈希: `md5sum` / `sha1sum` / `sha256sum`
3. 创建案例目录: `case/{01-triage,02-strings,03-static,04-decoding,05-config,06-extracted,07-stages,09-reports,10-iocs}`
4. 初始化 `case/AGENTS.md`

### Phase 1: ELF Triage

**加载 `references/elf-triage.md`** 获取完整命令序列和输出解析模板。

核心步骤：

1. `file` → 架构、端序、链接方式、stripped 状态
2. `checksec` → RELRO / Canary / NX / PIE / FORTIFY / RPATH
3. `readelf -h` → ELF header (Type/Entry/PH/SH)
4. `readelf -l` → Program Headers (GNU_STACK/GNU_RELRO/TLS/LOAD)
5. `readelf -d` → Dynamic Section (NEEDED/BIND_NOW/RPATH/RUNPATH)
6. `ldd` / `lddtree` → 库依赖分析
7. `readelf -s` → Symbol Table (stripped 判定)
8. `strings` + 模式搜索 → URL/IP/路径/敏感关键字/编译器指纹

**路由规则** — 根据 triage 结果自动加载后续 reference:

| 发现                          | 行动                                                 |
| ----------------------------- | ---------------------------------------------------- |
| `stripped`                    | 加载 `references/static-analysis.md` (stripped 策略) |
| `Full RELRO`                  | 加载 `references/elf-security.md`                    |
| `UPX/加壳标记`                | 加载 `references/unpacking.md`，优先脱壳             |
| `加密字符串 (高熵)`           | 建议切换到 `binary-reverse` (密码学算法定位)         |
| `反调试引用 (ptrace/seccomp)` | 建议切换到 `binary-reverse` (反分析绕过)             |
| `可疑漏洞迹象`                | 建议切换到 `linux-pwn` (漏洞利用)                    |

### Phase 2: Static Analysis

**加载 `references/static-analysis.md`。** 如需要反汇编模式解读，建议切换到 `binary-reverse`。

核心步骤：

1. `objdump -d -M intel` → 反汇编全部代码段
2. **Stripped**: 使用 radare2 `aaa; afl` heuristic 函数识别
3. **Non-stripped**: 基于符号表定位关键函数 + 交叉引用追踪
4. 敏感函数调用检测
5. Ghidra/radare2 深度分析（如可用）

### Phase 3: Dynamic Analysis

**仅在用户明确授权且环境隔离后执行。加载 `references/dynamic-analysis.md`。**

### Phase 4: Security Assessment

**加载 `references/elf-security.md`。** 评估安全缓解措施组合及可利用性评分 (0-10)。

### Phase 5: Report

更新 `case/REPORT.md` 和 `case/AGENTS.md`，输出:

- 案例摘要 + 样本清单（含哈希）
- 安全态势总结
- 关键发现（解码/C2/持久化/反分析）
- IOC 清单
- 进一步分析建议（推荐切换的相邻技能）

## Reference Loading Guide

| 场景                        | 加载的 Reference 文件            |
| --------------------------- | -------------------------------- |
| 任何 ELF 分析的起点         | `references/elf-triage.md`       |
| 理解 ELF 结构细节           | `references/elf-headers.md`      |
| 动态链接/GOT/PLT/LD_PRELOAD | `references/elf-dynamic.md`      |
| 安全特征分析/漏洞评估       | `references/elf-security.md`     |
| Ghidra/radare2/objdump 使用 | `references/static-analysis.md`  |
| GDB/strace/Frida 调试       | `references/dynamic-analysis.md` |
| 加壳检测与脱壳              | `references/unpacking.md`        |

## Token Budget

1. **聊天只放结论**: 不粘贴冗长的命令输出
2. **输出落盘**: 反汇编、strings、日志写入 `case/`，用 `rg`/`head`/`tail` 检索
3. **两击失败即转向**: 同一分支两次失败后记录 blocker，切换方法
4. **脚本持久化**: 重复使用的逻辑写入 `case/04-decoding/`

## Output Template

```text
## ELF 分析结果: <sample_name>

### 基本信息
- 架构: <arch> | 端序: <endian> | 链接: <dynamic/static>
- Stripped: <yes/no> | 加壳: <yes/no/type>

### 安全态势
| RELRO | Canary | NX | PIE | seccomp | FORTIFY |
|-------|--------|----|-----|---------|---------|

### 关键发现
- ...

### 进一步分析建议
- 建议切换到: `binary-reverse` / `linux-pwn`
```

