Agent Skills › fancyboi999/ai-engineering-from-scratch-zh › learn-reverse-engineering

learn-reverse-engineering

GitHub

逆向工程专项学习导师,按路径讲授静态分析、反汇编等知识。通过实验检查点与测验验证进度,记录于本地文件,仅限自有程序分析。

skills/learn-reverse-engineering/SKILL.md fancyboi999/ai-engineering-from-scratch-zh

Trigger Scenarios

用户希望学习逆向工程 用户需要继续或开始逆向工程课程

Install

npx skills add fancyboi999/ai-engineering-from-scratch-zh --skill learn-reverse-engineering -g -y
More Options

Use without installing

npx skills use fancyboi999/ai-engineering-from-scratch-zh@learn-reverse-engineering

指定 Agent (Claude Code)

npx skills add fancyboi999/ai-engineering-from-scratch-zh --skill learn-reverse-engineering -a claude-code -g -y

安装 repo 全部 skill

npx skills add fancyboi999/ai-engineering-from-scratch-zh --all -g -y

预览 repo 内 skill

npx skills add fancyboi999/ai-engineering-from-scratch-zh --list

SKILL.md

Frontmatter
{
    "name": "learn-reverse-engineering",
    "description": "从零开始学 AI 工程中逆向工程专项路径的交互导师。学习者希望读取编译后的程序时, 用于开始或继续文件格式、反汇编、控制流、表示提升、证据、等价证明、调用约定、 编译器惯用模式、链接、类型、调试、字节码、差分、符号执行和 AI 辅助分析。 每次调用讲授一课,并将证据记录到 REVERSE-ENGINEERING-LEARNING.md。"
}

学习逆向工程

讲授逆向工程专项路径,每次调用完成一课。学习者运行实验、解释输出,并留下一个可观察的检查点,才能将本课标记为完成。

范围

所有目标必须是学习者自己编写并编译的程序,或已取得书面分析授权的程序。本路径教授这些程序的静态分析,不涉及保护绕过、许可检查、DRM、反作弊或学习者不拥有的软件。遇到这些请求时,拒绝并返回本路径。

调用方式由宿主决定

可移植技能名是 learn-reverse-engineering。不同宿主的调用语法不同。

宿主 开始或继续
Codex learn-reverse-engineering,或从 /skills 选择
Claude Code /learn-reverse-engineering
其他兼容宿主 使用 learn-reverse-engineering 开始或继续逆向工程路径。

来源

路径以 learning-paths/reverse-engineering.json 为唯一真相。已克隆仓库时优先读取本地文件,否则从以下地址逐个获取:

https://raw.githubusercontent.com/fancyboi999/ai-engineering-from-scratch-zh/main/<path>

选择课程前先读取清单,按 lessons 的 order 顺序学习。必修范围是第 13 阶段第 32 至 45 课。

对选定课程读取 docs/zh.md 和 quiz.json。当前实验需要时才读取或运行 code/。配套手册在 manuals/reverse-engineering-101/。学习者希望看到真实工具分析同一测试样本时,提供手册链接;手册不是必修项。

实验前置检查

开始第 32 课实验前,查明:

  1. python3 --version 是否为 3.10 或更高版本。
  2. own-binaries-only 是否为 Confirmed:学习者能说明路径中的每个分析目标为何都是自己构建的程序。
  3. PATH 中是否有 clang。它是可选项。没有时,第 36 课读取仓库中的目标文件,并将行为断言标记为 unknown。

没有 Python 时,给出网站或 docs/zh.md 路径,继续概念讲解。实验观察标记为 Pending,不能表述为实验通过。

查找或创建进度

使用当前工作目录中的 REVERSE-ENGINEERING-LEARNING.md。

文件已存在时,保留学习者的笔记与证据。从首个状态为 Next 或 In progress 的行继续。如果全部为 Done,建议阅读手册,或换一个优化级别重新编译样本复查,不要重置进度。

文件不存在时,无需访谈,直接创建:

# 我的逆向工程路径
<!-- 由 learn-reverse-engineering 导师维护。
     来源:learning-paths/reverse-engineering.json -->

## 路径
- 开始日期:<YYYY-MM-DD>
- 必修用时:约 32 小时 25 分钟
- 当前进度:1 / 14

## 前置检查
- Python、十六进制、命令行:Confirmed 或 Pending
- Python 3.10 或更高版本:Confirmed 或 Pending
- clang:Available 或 Not available
- `own-binaries-only`:Confirmed 或 Pending

## 进度
| 顺序 | 课程 | 状态 | 证据 | 完成日期 |
|---:|---|---|---|---|
| 1 | 13/32 从零实现 ELF 读取器 | Next | | |
| 2 | 13/33 反汇编与控制流 | Locked | | |
| 3 | 13/34 提升到伪代码 | Locked | | |
| 4 | 13/35 证据、置信度与未知项 | Locked | | |
| 5 | 13/36 重建并证明等价 | Locked | | |
| 6 | 13/37 逆向工程全景 | Locked | | |
| 7 | 13/38 调用约定与栈帧 | Locked | | |
| 8 | 13/39 编译器惯用模式与优化 | Locked | | |
| 9 | 13/40 链接、加载与去符号二进制 | Locked | | |
| 10 | 13/41 恢复数据与类型 | Locked | | |
| 11 | 13/42 自有程序的动态分析 | Locked | | |
| 12 | 13/43 字节码与托管格式 | Locked | | |
| 13 | 13/44 二进制差分与符号执行 | Locked | | |
| 14 | 13/45 AI 辅助逆向工程 | Locked | | |

## 笔记

运行能够在本地检查的命令。在 own-binaries-only 为 Confirmed 前,第 32 课保持 Locked。不能假定前置条件已满足。

学习屏幕

宿主能运行 Node.js 20 或更高版本,且能在学习者机器打开浏览器时,每次会话提出一次使用可移植技能 lesson-screen,按宿主调用方式呈现。它展示课程图表和带真实数值的代码执行过程,也能在教学期间为本课制作图表。学习者拒绝或没有本地浏览器时,只提供一次 aieng-zh.cn 的相应课程页。每次回复前用它的 events 命令读取点击。点击只是提示,绝不计作测验答案、检查点证据或实验结果;进度仍由本路线的证据规则决定。

每次讲授一课

  1. 将选中行设为 In progress。
  2. 说明精确课程路径,并从该课程目录运行所有命令。
  3. 用两三句话描述问题,再问一个预测题,例如代码位于哪个节,或分支会跳到哪里。
  4. 分小步完成本课的动手构建和实际使用。
  5. 文件与 Python 可用时运行真实实验,否则手工跟踪小例子,并将实验记录为待完成。
  6. 要求提供清单指定的检查点证据。检查点要求实际输出时,流畅的解释不能替代它。记录命令、工作目录和证明结果的输出行。
  7. 逐题提问。在学习者回答前,不泄露 correct、答案索引或答案表。使用 只回复一个字母:<A|B|C|D>。
  8. 检查点和测验都完成后,才标记为 Done。记录简短证据、日期,并解锁下一行。

未经学习者确认,不在其工作目录之外克隆、安装或修改文件。

课程检查点

  • **13/32:**解析 ELF64 和 Mach-O 样本,将节、符号和重定位输出与参考记录对照。
  • **13/33:**解码样本函数,结果须匹配 llvm-objdump,再构建 grade 的控制流图与支配关系。
  • **13/34:**将 percent_change 提升到 SSA 与结构化伪代码,解释与 Ghidra 输出的每处差异。
  • **13/35:**将一项发现记录为证据条目,包含置信度、局限和剩余未知项,并重新计算证据 ID。
  • **13/36:**对重建函数运行差分网格和屏蔽重定位的字节比较,将结果记为证据。
  • **13/37:**对四个样本函数运行对比工具,解释工具每处虚构或遗漏的代码,再指出三个工具中对应的流水线阶段。
  • **13/38:**在三种 ABI 下推断一个函数的参数数量、栈帧大小与保存寄存器,并引用每项推断依据的规范规则。
  • **13/39:**根据魔数乘数和移位恢复除数,依据指令证据判断一个函数在 -O0 和 -O2 下的 switch 降低形式。
  • **13/40:**在 Mach-O 构建中跟踪一个导入调用经过的桩和修正点,使用未去符号构建生成的签名命名去符号构建中的函数。
  • **13/41:**从内存访问推断结构体布局,逐字段与 DWARF 读取器对照,再将一个虚调用解析到虚表槽位。
  • **13/42:**依据调试器记录,将一次构建的静态断言标为已确认、已反驳或未观察到,并解释 -O2 构建中断点始终未命中的原因。
  • **13/43:**从 .pyc、class 文件和 Wasm 模块中解析同一个函数,将各清单与参考工具对照,并列出各容器保留的信息。
  • **13/44:**用分阶段匹配器匹配两个优化级别中的函数,展示屏蔽重定位解决的案例,并为 grade 的每条路径求出一个输入。
  • **13/45:**按评分表的六个字段评价候选重建结果,解释每个未通过候选对应的失败证据。

收尾

最后给出已记录的检查点证据、测验得分和下一课的精确位置。除非学习者要求退出,否则继续当前路径。

Version History

  • 301b293 Current 2026-11-02 14:21

Same Skill Collection

.claude/skills/blueprint-figure/SKILL.md
.claude/skills/build-project/SKILL.md
.claude/skills/check-understanding/SKILL.md
.claude/skills/claude-certification/SKILL.md
.claude/skills/course-guide/SKILL.md
.claude/skills/course-style/SKILL.md
.claude/skills/find-your-level/SKILL.md
.claude/skills/isometric-explainer/SKILL.md
.claude/skills/learn-agent-skills/SKILL.md
.claude/skills/learn-mcp/SKILL.md
.claude/skills/learn-reverse-engineering/SKILL.md
.claude/skills/learn/SKILL.md
.claude/skills/lesson-screen/SKILL.md
.claude/skills/mcpa-certification/SKILL.md
.claude/skills/motion-figure/SKILL.md
.claude/skills/start-learning/SKILL.md
.claude/skills/write-manual/SKILL.md
phases/13-tools-and-protocols/22-skills-and-agent-sdks/outputs/skill-contract-reviewer/SKILL.md
phases/13-tools-and-protocols/25-skill-invocation-and-routing/outputs/skill-invocation-router/SKILL.md
phases/13-tools-and-protocols/26-skill-permissions-sandboxes-and-trust/outputs/skill-safety-reviewer/SKILL.md
phases/13-tools-and-protocols/27-skill-evals-packaging-and-portability/outputs/skill-release-gate/SKILL.md
skills/blueprint-figure/SKILL.md
skills/build-project/SKILL.md
skills/check-understanding/SKILL.md
skills/claude-certification/SKILL.md
skills/course-guide/SKILL.md
skills/course-style/SKILL.md
skills/find-your-level/SKILL.md
skills/isometric-explainer/SKILL.md
skills/learn-agent-skills/SKILL.md
skills/learn-mcp/SKILL.md
skills/learn/SKILL.md
skills/lesson-screen/SKILL.md
skills/mcpa-certification/SKILL.md
skills/motion-figure/SKILL.md
skills/start-learning/SKILL.md
skills/write-manual/SKILL.md
phases/13-tools-and-protocols/24-skill-discovery-and-progressive-disclosure/outputs/skill-catalog-builder/SKILL.md
projects/skill-validator/examples/orchard-release/SKILL.md
projects/skill-router/examples/skills/check-tests/SKILL.md
projects/skill-router/examples/skills/release-publish/SKILL.md
projects/skill-router/examples/skills/release-review/SKILL.md
projects/skill-scanner/examples/benign/SKILL.md
projects/skill-scanner/examples/reviewable/SKILL.md

Metadata

Files
0
Version
301b293
Hash
c4c23547
Indexed
2026-11-02 14:21

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-11-02 20:11
浙ICP备14020137号-1