关于 reverse-engineering
面向初学者的逆向工程技能,指导分析未知二进制文件、恶意软件样本、固件和混淆代码。它采用分阶段流程,提供只读初筛脚本,并在执行样本前设置严格的安全确认门槛。
主要功能
- 01只读脚本提取文件初筛信息
- 02涵盖静态、动态与行为分析
- 03提供 PE、ELF、恶意软件和固件参考
- 04按分析阶段选择工具深度
- 05执行未知样本前强制安全核验
- 06提供分析报告模板与结构
适用场景
- 01初步检查可疑可执行文件
- 02在无源码时理解程序行为
- 03分析固件映像或嵌入式设备
- 04汇总恶意软件指标与分析结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ juank115/ reverse-engineerskill --skill reverse-engineering安装后在 Claude Code 中输入/reverse-engineering确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/report-template.mdreferences/cheatsheet.mddynamic-analysis-example.mdfirmware-iot.mdlinux-elf.mdmalware-analysis.mdstatic-analysis-example.mdwindows-pe.mdscripts/triage.py详细介绍
面向初学者的逆向工程技能
这项技能可帮助你逐步分析未知二进制文件、可执行文件、恶意软件样本、固件镜像和混淆代码。它面向初学者,优先考虑安全性、清晰度和可重复的工作流。
何时使用这项技能
- 用户提供了可疑文件、二进制文件或可执行文件,并询问“这是什么作用?”
- 用户想在没有源代码的情况下了解程序的工作原理。
- 用户提到反汇编、反编译、调试、恶意软件、固件、混淆或解包。
- 用户需要帮助选择工具,或解读逆向工程工具的输出。
快速开始:先运行初步检查脚本
对于任何未知文件,请先运行内置初步检查脚本(只读、纯 Python、无依赖项):
python "${CLAUDE_SKILL_DIR}/scripts/triage.py" <sample>
如果环境中未设置 CLAUDE_SKILL_DIR,请改为在此技能的目录中运行脚本。它会报告哈希、熵、文件格式(PE/ELF/Mach-O)、区段、加壳器线索、可能的反分析指标以及提取出的字符串——这些信息足以帮助你决定下一步。请将每项启发式结果视为有待核实的线索,而非恶意行为的证据。
内置资源
此技能附带了辅助文件。仅在任务符合相应领域时加载参考资料:
| 资源 | 加载时机…… |
|---|---|
references/windows-pe.md | 分析 Windows PE 文件(.exe、.dll、.sys):标头、导入项、加壳器、手动解包 |
references/linux-elf.md | 分析 Linux/Unix ELF 二进制文件:标头、符号、GDB 工作流、反分析 |
references/malware-analysis.md | 样本可能具有恶意性:实验室环境设置、解包策略、映射到 MITRE 的行为、YARA |
references/firmware-iot.md | 固件镜像或嵌入式设备:binwalk 提取、仿真、UART/JTAG |
references/cheatsheet.md | 需要特定命令:x64dbg、GDB、radare2、Ghidra、WinDbg 快捷操作 |
references/static-analysis-example.md | 初学者需要完整的静态分析示例 |
references/dynamic-analysis-example.md | 初学者需要完整的隔离动态分析示例 |
scripts/triage.py | 执行只读的第一轮初步检查 |
assets/report-template.md | 撰写最终分析报告 |
安全第一:强制执行门禁
逆向工程可能涉及恶意代码。**绝不要在宿主机上运行或调试未知可执行文件。**如果工具只读取样本,则允许在宿主机上进行静态检查。
在提供或执行任何会启动样本、继续调试器运行、单步执行解包存根、模拟固件或连接实时硬件的命令之前,你必须与用户核实所有适用事项:
- 执行将在专用、可销毁的分析虚拟机或沙箱中进行,而非宿主机上。已禁用共享文件夹、共享剪贴板、拖放功能和宿主机凭据集成。
- 存在干净的快照,可在分析结束后恢复。
- 已禁用网络,或网络仅连接到隔离的虚假网络。未桥接到家庭、企业或生产网络。
- 已安装并启动监控工具,且启动时间早于样本。
- 环境中不包含生产凭据、个人数据、令牌或受信任设备。
- 对于物理固件操作,设备归用户所有或已获授权,且与受信任网络隔离;连接时已确认电压并遵循安全硬件操作规范。
如果尚未确认这些情况,请明确向用户征求确认。若任何适用事项尚未确认,请停留在阶段 1–3,并仅提供只读初步分析、静态分析或反汇编。仅仅发出警告并不满足此门禁要求。
执行前,先通过 SHA-256 识别文件。哈希查询是只读操作;由于样本文件可能会公开,未经用户许可,不得将样本本身上传到公共分析服务。
适合初学者的逆向工程工作流
对普通二进制文件、疑似恶意软件和固件,均使用相同的六个阶段。只有在说明原因后,才可跳过不适用的阶段:
- 初步分析:识别文件类型、架构、加壳情况和熵。
- 静态分析:不执行文件,读取字符串、文件头、导入项和元数据。
- 反汇编/反编译:将机器码转换为可读形式。
- 动态分析:通过执行门禁后,在受控监测下运行或模拟。
- 行为分析:记录网络、文件系统、注册表、进程或设备活动。
- 报告:总结发现,包括 IOC、MITRE ATT&CK 映射和建议。
固件/IoT 是有条件适用的领域专项路线,不是第七个阶段,也不能替代阶段 5。输入为固件或嵌入式设备时,请加载 references/firmware-iot.md,并在上述六个阶段中应用其中关于采集、提取、架构、模拟和硬件的指导。例如,提取属于阶段 1–2,原生代码审查属于阶段 3,模拟属于阶段 4,观察设备行为属于阶段 5。
选择合适的工具深度
先从复杂度最低、能够回答问题的工具入手,只有在证据需要时才深入使用其他工具。
| 级别 | 从这些工具开始 | 在以下情况下转向此级别…… |
|---|---|---|
| 初学者/初步检查 | 附带的 triage.py、file、strings、Detect It Easy、PE-bear | 需要了解格式、哈希、字符串、节区或加壳线索 |
| 引导式可视化分析 | Ghidra、IDA Free、Cutter;通过执行门禁后使用 Procmon/System Informer | 需要交叉引用、反编译或可观察的运行时行为 |
| 高级/手动操作 | radare2、搭配 gef/pwndbg 的 GDB、WinDbg、x64dbg 解包、Scylla/IAT 修复 | 简单工具无法解释控制流、反分析机制或加壳载荷 |
不要将手动解包或 IAT 修复作为初学者的默认操作。使用任何高级命令前,请说明其目标和预期的可观察结果。
阶段 1:初步分析
每个样本都从这里开始。
识别文件
在主机或安全分析 VM 上运行:
file <sample>— 文件类型和架构。exiftool <sample>— 元数据、编译器线索、时间戳。sha256sum <sample>— 用于查询的加密哈希。ssdeep <sample>— 用于查找相似样本的模糊哈希。
检查加壳/混淆
- 高熵区段可能表示加壳或加密。
- 导入项很少,同时
.text或.data区段很大,可能表示使用了加壳工具。 - 查找
UPX0、UPX1、.vmp、.themida、.petite等区段名称。
随附脚本会标出已知的加壳工具区段名称、高熵或可写可执行区段,以及可能与反调试、计时或虚拟化相关的字符串。在后续阶段确认这些线索;它们也可能出现在合法软件中。
阶段 2:静态分析
检查字符串、标头、导入项、导出项、元数据、资源和签名,不执行样本。
实用静态分析工具
| 工具 | 用途 |
|---|---|
file | 识别文件类型和架构 |
strings | 提取可读字符串 |
exiftool | 提取元数据 |
binwalk | 分析签名并提取数据 |
hexdump -C | 检查原始字节 |
pefile (Python) | 解析 PE 标头 |
pyelftools (Python) | 解析 ELF 标头 |
capstone (Python) | 轻量级反汇编 |
yara | 基于规则的模式匹配 |
阶段 3:反汇编与反编译
根据预算和平台使用以下工具:
| 工具 | 类型 | 最适合 |
|---|---|---|
| Ghidra | 免费、开源 | 静态分析、反编译、跨平台 |
| IDA Free | 免费增值 | 反汇编、适合初学者的图形视图 |
| radare2 / Cutter | 免费、开源 | 命令行工作流、脚本编写 |
| Binary Ninja | 商业软件 | 快速分析、出色的 IL |
| x64dbg | 免费调试器 | Windows 动态分析 |
| GDB + gef/pwndbg | 免费调试器 | Linux 动态分析 |
面向初学者的反编译技巧
- 随着理解加深,重命名函数和变量。
- 首先查找
main、WinMain或入口点函数。 - 跟踪用户输入(网络、文件、注册表、命令行)流向危险 API 的路径。
- 搜索可疑的 API 调用:
CreateRemoteThread、VirtualAllocEx、InternetOpenUrl、RegSetValueEx、WriteProcessMemory。
阶段 4:动态分析与调试
在强制执行检查关卡完全验证通过之前,不要进入此阶段。
执行前(必须验证所有适用项)
- 已确认使用专用的一次性 VM 或沙箱;已禁用主机集成。
- 已创建干净快照。
- 已禁用网络,或仅通过隔离的 fake-net 进行路由。
- 已从下表中选定监控工具、完成安装并启动。
- 未暴露真实凭据、敏感数据或可信设备。
监控工具
| 工具 | 平台 | 记录内容 | 安全要求 |
|---|---|---|---|
| Procmon | Windows | 注册表、文件、进程事件 | 在执行样本前,于已验证的 VM 内启动 |
| Process Hacker / System Informer | Windows | 进程、内存、句柄 | 对未知样本,仅在已验证的 VM 内使用 |
| Wireshark | 跨平台 | 网络流量 | 仅捕获隔离 VM/fake-net 接口的流量,绝不捕获可信 LAN 流量 |
| strace / ltrace | Linux | 系统调用和库调用 | 这些工具会执行样本;必须使用已验证的 VM |
| x64dbg / WinDbg | Windows | 实时调试 | 加载/继续运行可能会执行代码;必须使用已验证的 VM |
| GDB | Linux | 实时调试 | 启动/继续运行可能会执行代码;必须使用已验证的 VM |
调试检查清单(仅限通过检查关卡后)
- 在可疑 API 上设置断点。
- 如果样本已加壳,仅在已验证的 VM 内单步跟踪解包桩代码。
- 在安全的情况下,从内存中转储解包后的载荷。
- 记录完整的命令行参数和环境变量。
阶段 5:行为分析
系统地记录观察到的行为。对于疑似恶意软件,请加载 references/malware-analysis.md;对于固件,请使用 references/firmware-iot.md 记录服务、文件系统变更、设备接口和网络行为。
持久化机制
- 注册表运行键(
HKCU\Software\Microsoft\Windows\CurrentVersion\Run)。 - 计划任务(
schtasks)。 - 启动文件夹。
- 服务和驱动程序。
- WMI 事件订阅。
网络指标
- DNS 查询。
- HTTP/HTTPS C2 回连。
- IP 地址和端口。
- User-Agent 字符串。
数据窃取/影响
- 文件枚举。
- 屏幕截图。
- 键盘记录挂钩。
- 凭据转储(
lsass、SAM hive)。 - 加密/勒索软件文件扩展名。
需收集的 IOC
- SHA-256 哈希值。
- 创建的文件路径。
- 修改的注册表项。
- 网络指标。
- 互斥体/事件名称。
- 写入的文件名。
阶段 6:报告
每次会话结束时都应提供清晰的报告(使用 assets/report-template.md 作为交付文档结构):
- 执行摘要:样本是什么,以及它为何重要。
- 入侵指标(IOC):哈希值、IP、域名、文件路径。
- 行为摘要:样本执行时会做什么。
- MITRE ATT&CK 映射(针对恶意软件):观察到的战术和技术。
- 使用的工具:列出工具和命令。
- 建议:遏制、检测和预防措施。
输出格式
帮助用户时,请按以下格式组织回复:
## TL;DR
One-paragraph summary of the finding or next step.
## Analysis
Step-by-step reasoning, tool output, and interpretation.
## Findings
- Bullet 1
- Bullet 2
## IOCs (if malware)
| Type | Value |
|------|-------|
| SHA-256 | ... |
| IP | ... |
## Next steps
1. Do this next.
2. Then do this.
## Safety reminders
- Reminder 1
- Reminder 2
示例提示词
- “分析这个可执行文件。它是否具有恶意?”
- “反编译这个函数,并说明它的作用。”
- “帮我解包这个 UPX 样本。”
- “我可以从这个内存转储中提取哪些 IOC?”
- “带我逐步逆向分析这个固件映像。”
- “逐行解释这段汇编代码。”