ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Radare2 逆向工程完整指南:从环境准备到第一次分析二进制

Radare2 逆向工程完整指南:从环境准备到第一次分析二进制

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 / Debiansudo apt-get install build-essential git
Fedora / RHELsudo dnf groupinstall "Development Tools",再安装git
macOSxcode-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),仅供参考

返回列表