AI 逆向工程与代码理解实战 · 第 02 章 radare2与脚本化


AI 逆向工程与代码理解实战 · 第 02 章 radare2与脚本化

章节摘要:radare2(约 2.5 万 stars,最新 6.2.4,社区口径 2026-10)是 UNIX 风格的命令行逆向框架:小命令、可组合、可管道。2.1 节讲它的三段哲学——seek 定位、analysis 分析、print 打印——与核心命令族(aaa、afl、pdf、axt 等),并用它把 demo_stripped 再走一遍,顺带说清 r2 与 Ghidra 的互补定位:前者轻快、管道友好,后者厚重、工程化。2.2 节上 r2pipe:Python 经一根管子向 r2 发命令收结果,cmd 与 cmdj 两种返回形态;实战脚本批量导出「函数 + 伪代码文本」的 JSON——与第 1.3 节 Ghidra 侧导出同构,这份备料正是第 04 章喂给大模型的粮食。

学习目标

  • 用「seek、分析、打印」三段式描述 r2 的使用模型。
  • 熟练使用核心命令族完成定位、反汇编、交叉引用查询。
  • 用 r2 独立走查 demo_stripped,与 Ghidra 走查结果互证。
  • 说出 r2 与 Ghidra 各自的强项与适用场景。
  • 用 r2pipe 写出批量导出函数与伪代码 JSON 的脚本。
  • 按下游模型消费需求设计备料 JSON 的字段与截断策略。

核心概念速览

r2 的使用模型(一切命令围绕三件事) ┌── seek(s):把光标移到某地址 / 函数 / 标志 │ ├── analyze(a):aaa 全量分析 / af 单函数 / afl 列函数 │ └── print(p):pdf 反汇编函数 / pd N 行 / izz 字符串 │ ▼ r2pipe 把命令搬进 Python ┌──────────────────────────────┐ │ cmd("...") -> 文本 │ │ cmdj("...") -> JSON 对象 │ └──────────────┬───────────────┘ ▼ out/demo_functions.json(第 04 章的备料) ​

一句话金句:Ghidra 是逆向的工作台,r2 是逆向的瑞士军刀——后者能塞进管道,这正是自动化要的形状。

子章节导航

  • 第 2.1 节《r2命令行逆向范式》:三段哲学、核心命令族、demo_stripped 走查、与 Ghidra 的互补定位。
  • 第 2.2 节《r2pipe可编程逆向》:管道模型、最小示例、批量导出函数与伪代码 JSON、备料形态设计。

两节按序读:2.1 建立命令直觉,2.2 把直觉变成脚本。跳过 2.1 直接写 r2pipe 也能跑,但你会不知道该发什么命令。

子章节之间的逻辑关系

┌────────────────────┐ 命令会敲了 ┌────────────────────┐ │ 2.1 r2命令行逆向范式 │ ─────────────▶ │ 2.2 r2pipe可编程逆向 │ │ seek / 分析 / 打印 │ 命令进脚本 │ cmd / cmdj 双形态 │ └─────────┬──────────┘ └─────────┬──────────┘ │ 产物:命令直觉 │ 产物:demo_functions.json │ (第 04 章 r2ai 的交互语言) │ (第 04 章 RAG 与模型的输入) └──────────────────────────────────────┘ ▼ 第 04 章 r2ai与r2mcp(把 r2 交给模型)/ 第 03 章(Ghidra 侧同构备料) ​

前置知识与后续延伸

  • 前置:第 0.2 节环境与 demo_stripped;第 1.2 节的走查五步法(本章用 r2 重演,结论互证)。
  • 延伸阅读:radare2 官方文档的命令总览与 r2pipe 绑定说明;命令速记可等《附录 B 工具速查》(后续批次)。
  • 后续:第 03 章在 Ghidra 侧接 MCP;第 04 章把 r2 与 r2ai / r2mcp 接进模型,本章的 JSON 是那边的粮食。

合规声明:本节内容仅用于授权范围内的安全研究与教育目的;未经授权对他人软件进行逆向工程可能违反法律与许可协议。


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U