
radare2 v6.2.2
类 UNIX 逆向工程框架与命令行工具集
Radare2:面向 Unix 极客的自由逆向工程框架
当前 git master 分支为 6.2.2,下一个版本将是 6.2.4。
描述
r2 是 radare 的完全重写版本。它提供了一组库、工具和插件,以简化逆向工程任务。整体以 LGPLv3 协议分发,但每个插件可以拥有不同的许可证(详情参见 r2 -Lj)。
radare 项目最初是一个专注于取证分析的简单命令行十六进制编辑器。如今,r2 已发展为一个功能齐全的低级命令行工具,支持通过内置的 Javascript 解释器或 r2pipe 进行脚本编写。
r2 可以编辑本地硬盘上的文件、查看内核内存,并支持本地调试程序或通过远程 gdb/windbg 服务器进行调试。r2 广泛的架构支持使您能够分析、模拟、调试、修改和反汇编任何二进制文件。
安装
下载最新的已发布二进制文件。
推荐从 Git 仓库源码安装 radare2:
git clone https://github.com/radareorg/radare2
radare2/sys/install.sh
- 运行
sys/install.sh进行默认的 acr+make+symlink 安装 - 支持 meson/ninja(muon/samu 亦可)和 make 构建。
Nix
radare2 在 dist/nix 下提供了 Nix 打包。
源码构建
- r2 可以从
git安装,或通过pip使用r2env安装。 - Windows 构建需要 meson 以及 msvc 或 mingw 作为编译器。
- 卸载当前构建的 r2 请运行
make uninstall。 - 卸载系统中所有安装的 r2 请执行:
sudo make purge。
在 Windows 上使用 .bat 脚本和 msvc:
preconfigure.bat REM 设置 python、meson、ninja
configure.bat REM 运行 meson b + vs 项目
make.bat REM 运行 ninja -C b
prefix\bin\radare2.exe
热门插件:
使用 r2pm 工具,您可以浏览并安装许多使用 radare2 的插件和工具。
- iaito:官方 Qt 图形界面
- keystone:使用 Keystone 库进行汇编指令
- decai:基于 AI 的反编译器
- r2ai:在 r2 内部使用 Llama 在 localhost 运行语言模型!
- r2dec:基于 r2 的 JS 反编译器,通过
pdd命令访问 - r2diaphora:基于 radare2 的 Diaphora 二进制差异比较引擎
- r2flutter:用于 Android 和 iOS 应用的 Dart/Flutter AOT 快照分析
- r2frida:frida io 插件。使用
r2 frida://0启动 r2 以使用它 - r2ghidra:可通过
pdg访问的独立原生 ghidra 反编译器 - r4ghidra:在您的 Ghidra 中体验 radare 的乐趣
- r2papi:基于 r2pipe 的高级 API
- r2pipe:使用任何编程语言编写 radare2 脚本
- r2poke:与 GNU/Poke 集成,提供扩展的二进制解析能力
- goresym:将 GoReSym 符号导入为 flags
- r2yara:从 r2 运行 Yara,或从 Yara 使用 r2 原语
- radius2:基于 boolector 和 esil 的快速符号执行引擎
- r2sarif:导入/扩展/导出 SARIF 文档
- r2hermes:用于 React Native Hermes 字节码的反汇编器和分析器
- r2renef:Radare2 的 Renef IO 插件 - 动态 Android 插桩
- r2unity:从 radare2 检查 Unity IL2CPP 元数据和原生二进制文件
- warrp:用于 binary ninja 的 WARP 格式的原生 radare2 插件
使用方法
以下是使用 r2 的初步步骤,更多详情请阅读相关书籍或查找教程。
$ r2 /bin/ls # 以只读模式打开文件
> aaa # 分析程序(r2 -A)
> afl # 列出所有函数(尝试 aflt、aflm)
> px 32 # 打印当前块的 32 字节十六进制转储
> s sym.main # 跳转到 main(使用 flag 名称)
> f~foo # 过滤匹配 'foo' 的 flags(内部 |grep)
> iS;is # 列出节和符号(rabin2 -Ss)
> pdf; agf # 反汇编和 ASCII 艺术函数图
> oo+;w hello # 以读写模式重新打开并写入字符串
> ?*~... # 在所有命令帮助中交互式过滤
> q # 退出
r2 默认包含许多插件。但您可以通过使用 r2pm 包管理器来扩展其功能。
r2pm -s <word> # 搜索匹配单词的包
r2pm -Uci <pkg> # 更新数据库并全新安装一个包
r2pm -u <pkg> # 卸载指定的包
r2pm -l <pkg> # 列出已安装的包
资源
- 官方书籍:阅读关于 r2 的使用方法
- COMMUNITY.md:社区参与和宽松指南
- CONTRIBUTING.md:关于报告问题和贡献的信息。另请参阅贡献
- DEVELOPERS.md:r2 的开发指南
- SECURITY.md:报告漏洞的说明
- USAGE.md:一些示例命令
- INSTALL.md:使用 make 或 meson 的安装说明
文档
通过观看来自 r2con 的 youtube 演讲 了解更多关于 r2 的信息。此外还有许多博客文章、幻灯片和官方 radare2 书籍,但加入任何官方聊天频道并在此提出您的问题或反馈始终是个好主意。
社区
- 网站:https://www.radare.org/
- Discord:服务器
- Mastodon:@radareorg
- Telegram:主频道和副频道
- irc.libera.chat:
#radare、#radare_side - Matrix:
#radare:matrix.org
支持的平台
操作系统
Windows(自 XP 起支持 x86/x64/arm64)、Linux、Darwin、GNU/Hurd、Apple 的 {Mac、i、iPad、watch}OS、 Android、Wasmer、[Dragonfly、Net、Free、Open] BSD、Z/OS、QNX、SerenityOS、Solaris、AIX、 Haiku、Vinix、FirefoxOS。
架构
i386、x86-64、Alpha、ARM、AVR、BPF、sBPF、MIPS、PowerPC、SPARC、RISC-V、SH、m68k、 S390、XCore、CR16、HPPA、ARC、Blackfin、Z80、H8/300、V810、PDP11、m680x、V850、 CRIS、XAP (CSR)、PIC、LM32、8051、6502、i4004、i8080、Propeller、EVM、OR1K Tricore、CHIP-8、LH5801、T8200、GameBoy、SNES、SPC700、MSP430、Xtensa、xcore、 NIOS II、Java、Dalvik、Pickle、WebAssembly、MSIL、EBC、TMS320 (c54x、c55x、 c55+、c64x)、Hexagon、Brainfuck、Malbolge、whitespace、DCPU16、LANAI、lm32、 MSIL、InfernoDis、UXN、Cosmac、PythonBytecode、Sharp sm5xx MCPus、FreeScale QIQa、 MCORE、mcs96、RSP、SuperH-4、VAX、KVX、Am29000、LOONGARCH、JDH8、s390x、STM8。
文件格式
ELF、Mach-O、Fatmach-O、PE、PE+、MZ、COFF、XCOFF、OMF、TE、XBE、SEP64、BIOS/UEFI、BFLT、Pebble 应用、 Apple Dyldcache、Kernelcache、MCLF trustlets、DEX、ART、Java class、Android boot image、Plan9 可执行文件、Amiga HUNK、 ZIMG、MBN/SBL bootloader、ELF coredump、MDMP (Windows minidump)、PDP11、XTAC、CGC、DotNet、 WASM (WebAssembly 二进制)、Commodore VICE 模拟器、DOL、QNX、WAD、OFF、TIC-80、 GB/GBA、PSX、PRG (C64)、Apple Classic PEF、NDS、z64 和 N3DS ...
文件系统
在用户态挂载多种文件系统,如 NTFS、FAT、HFS+、EXT、APFS、BeosFS、BFS、MINIX、ReiserFS、SFS、ubifs、ufs、jfs、ISO9660、UDF、xfs

