radare2:一个能逆向分析几乎所有二进制文件的开源框架
文章目录
- radare2:一个能逆向分析几乎所有二进制文件的开源框架
radare2:一个能逆向分析几乎所有二进制文件的开源框架
GitHub 上有一个逆向工程框架,Star 数已经超过 24000,它就是 radare2。
radare2 简称 r2,是一套完整的逆向工程工具集。它最初只是一个命令行十六进制编辑器,后来逐步发展成一个功能齐全的底层分析工具。
r2 能做什么?简单说,它能分析、调试、反汇编、修改二进制文件。无论是本地硬盘上的文件,还是内核内存,或者是通过远程 gdb/windbg 服务器连接的程序,r2 都能处理。
r2 的架构支持范围很广。操作系统方面,覆盖了 Windows(从 XP 到 arm64)、Linux、macOS、Android、各种 BSD、Haiku、Solaris、AIX 等。CPU 架构方面,支持 x86、x86-64、ARM、MIPS、PowerPC、RISC-V、SPARC、m68k、Z80 等几十种。文件格式方面,ELF、PE、Mach-O、DEX、WASM 这些常见的都能识别,连 GameBoy、PSX、NDS 这些游戏机的格式也支持。
r2 的命令行交互方式比较特别。打开一个文件后,用aaa进行分析,afl列出所有函数,pdf反汇编当前函数,agf生成函数的 ASCII 图。整个操作逻辑是围绕地址和命令展开的,上手需要一点时间,但熟悉之后效率很高。
安装 r2 最直接的方式是从源码编译:
git clone https://github.com/radareorg/radare2 radare2/sys/install.sh也支持 meson/ninja 构建。Windows 用户可以用 .bat 脚本配合 MSVC 或 MinGW。如果不想折腾环境,r2 还提供了 Nix 包,以及通过 pip 安装的 r2env 方式。
r2 的插件生态是它的一个亮点。官方维护的 r2pm 包管理器可以搜索和安装插件。比较常用的有这些:
r2ghidra 集成了 Ghidra 的反编译器,在 r2 里用pdg命令就能调出反编译结果。r2frida 把 Frida 的动态插桩能力接了进来,用r2 frida://0就能启动。r2dec 是一个用 JavaScript 写的反编译器,通过pdd命令使用。r2yara 可以在 r2 里运行 Yara 规则。radius2 是一个基于 boolector 的符号执行引擎。
还有一些新一点的插件值得关注。decai 和 r2ai 把大语言模型引入了逆向分析流程,r2ai 甚至能在本地跑 Llama 模型。r2hermes 专门处理 React Native 的 Hermes 字节码。warrp 则打通了 r2 和 Binary Ninja 的 WARP 格式。
r2 内置了 JavaScript 解释器,可以用脚本扩展功能。也可以通过 r2pipe 从 Python、Go、Rust 等语言调用 r2,实现自动化分析。r2papi 在 r2pipe 之上封装了一层更高级的 API。
r2 每年会举办 r2con 大会,YouTube 频道上有历年的演讲录像。官方还写了一本书,放在 book.rada.re 上,覆盖了 r2 的主要用法。社区在 Discord、Telegram、Mastodon、IRC 上都比较活跃。
r2 采用 LGPLv3 协议发布,各个插件可以有不同的许可证。作为一个已经发展了十多年的项目,r2 的代码质量和社区治理都比较成熟。
。作为一个已经发展了十多年的项目,r2 的代码质量和社区治理都比较成熟。
