Radare2 逆向工程完整指南:从环境准备到第一次分析二进制
【免费下载链接】radare2UNIX-like reverse engineering framework and command-line toolset项目地址: https://gitcode.com/gh_mirrors/ra/radare2
Radare2 是一个跨平台的命令行逆向工程框架,集反汇编、二进制分析、调试与修补于一体,常用于恶意软件分析和可执行文件结构探索。本文将按"准备环境 → 选对安装方式 → 跑通第一个分析 → 故障排查"的顺序带你完整上手,命令都以短示例为主,看完即可在本地跑通一次完整的分析流程。
🧭 先搞清 Radare2 能帮你做什么
Radare2 的主程序是r2(也常写作radare2),它把逆向工程里的高频动作都做成了短命令。上表列出的就是分析一个二进制时最常用的几条:
| 命令 | 作用 |
|---|---|
aaa | 对当前文件做自动分析,识别函数、基本块和跳转 |
pdf @ main | 反汇编并显示main函数的完整汇编 |
afl | 列出分析出的所有函数 |
iS | 查看文件的段(section)信息 |
wx/wv | 写入字节、查看内存,用于修补二进制 |
除交互式终端外,它还提供rabin2(二进制信息)、rasm2(汇编/反汇编)、radiff2(二进制差分)等独立工具,适合写脚本做自动化分析。
Radare2 交互界面:左侧是寄存器与文件浏览面板,中间为反汇编区,右侧是函数列表与图形视图
🔌 安装前的环境准备:缺了什么编译器
Radare2 需要从头编译,无论选哪种安装方式,机器上都得先有完整的工具链。按发行版准备即可:
| 系统 | 需要准备的依赖 |
|---|---|
| Ubuntu / Debian | sudo apt-get install build-essential git |
| Fedora / RHEL | sudo dnf groupinstall "Development Tools",再安装git |
| macOS | xcode-select --install |
工具链齐了之后,把源码拉下来:
git clone https://gitcode.com/gh_mirrors/ra/radare2 cd radare2后面的所有命令都在radare2目录内执行。
📦 按场景选安装方式:从一键脚本到多版本管理
一键系统级安装(最常用)
普通用户推荐直接跑仓库自带的安装脚本 sys/install.sh。它会检测环境、编译全部组件,并创建符号链接,让r2等命令在系统范围内可用:
./sys/install.sh跑完就能在任意目录直接执行r2,这是最省事的路径。
没有管理员权限:用户目录安装
在共享机器或公司电脑上不方便用sudo时,改用 sys/user.sh 把 Radare2 装进用户主目录(~/.local下),不触碰系统目录,也不影响其他用户:
./sys/user.sh对应的卸载入口是 sys/user-uninstall.sh。
多版本共存:用 r2env 管理
需要同时挂着开发版和某个旧版本时,用 Python 的r2env工具隔离各版本,避免符号链接互相覆盖:
pip install r2env r2env init r2env add radare2@git之后在不同项目里各用各的版本即可,具体用法见 INSTALL.md 中的说明。
自定义构建:configure 与 Meson 两条路
如果默认脚本不满足需求(比如指定安装前缀、裁剪架构支持),可以走标准构建系统,二选一:
# 传统方式 ./configure --prefix=/usr/local make sudo make install# Meson 方式 meson setup build meson compile -C build meson install -C build所有可配置项(启用哪些架构、插件、优化级别等)都列在 meson_options.txt 里,配置前先看一遍能少走弯路。
🏁 首次运行的最小闭环:三行命令分析第一个二进制
用一个最小的 C 程序验证整条链路——编译、分析、看函数:
echo 'int main() { return 42; }' > test.c gcc -o test test.c r2 -AAA ./test-AAA参数会跳过交互直接完成自动分析。进入交互模式后试试这几条:
[0x0000xxxx]> aaa # 重新执行自动分析 [0x0000xxxx]> afl # 列出所有识别到的函数 [0x0000xxxx]> pdf @ main # 反汇编 main 函数 [0x0000xxxx]> q # 退出不想进交互模式时,也可以用单命令模式一次性拿结果,方便嵌进脚本:
r2 -v # 确认版本 r2 -qc 'afl' ./test # 直接打印函数列表后退出能列出main函数及其汇编,说明安装与分析链路都通了。
🩺 高频故障速查:权限、编译失败与彻底卸载
| 现象 | 先查什么 | 处理方式 |
|---|---|---|
| 提示权限不足(permission denied) | 源码目录归属、目标安装路径是否可写 | sudo chown -R $(whoami) .修正归属,或改用sys/user.sh走用户级安装 |
| 报找不到编译器/头文件 | 工具链是否装全 | 按上表补齐build-essential或 Development Tools |
| 编译中途失败、缓存残留 | 之前是否有半成品构建 | 先make clean;仍不行就git clean -xdf清掉全部未跟踪文件后重来 |
| 机器上多个版本互相干扰 | which r2指向的是哪个目录 | 用r2env做版本隔离 |
| 想彻底移除 | 当初用哪种方式装的 | 见下方卸载清单 |
卸载按当初的安装路径对应执行:
make uninstall # 移除当前这次安装 make purge # 清除历史残留 make system-purge # 系统级彻底清理用户级安装则直接运行./sys/user-uninstall.sh。
🗺️ 进阶方向与项目资源索引
跑通最小闭环之后,按下面的索引按需深入:
- doc/:各架构与专题的逆向指南(iOS、Android、Windows、ESIL 等),排查特定平台问题时优先翻这里
- man/:
radare2、rabin2、rasm2等全部命令行工具的手册页 - test/db/:上千条命令测试用例,是学习命令写法的最快语料库
- scripts/:官方维护的分析脚本,包括 r2sptrace.py 这类配合 r2pipe 做 Python 自动化的示例
- libr/:库源码,想写自定义插件(如新的架构支持或调试后端)就从
libr/arch、libr/debug的插件目录看起 - subprojects/:capstone、sdb 等依赖子项目的位置,排查依赖构建问题时来这里
收尾
Radare2 的核心价值在于"一条命令行覆盖分析、调试、修补",命令短、可脚本化,适合把逆向流程嵌进日常工具链。建议的路径是:先用sys/install.sh装一个能用的版本,用本文的三行闭环验证环境,之后每次遇到新命令就去man/和test/db/里对照查,比啃长文档效率高得多。
【免费下载链接】radare2UNIX-like reverse engineering framework and command-line toolset项目地址: https://gitcode.com/gh_mirrors/ra/radare2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考