radareorg/radare2
GitHub: radareorg/radare2
一个开源的类Unix逆向工程框架,提供跨平台跨架构的二进制分析、调试、反汇编和修补能力。
Stars: 24118 | Forks: 3256
## Radare2:为 Unix 极客打造的自由逆向工程框架
[](https://repology.org/project/radare2/versions) [](https://github.com/radareorg/radare2/actions/workflows/ci.yml?query=branch%3Amaster) [](https://github.com/radareorg/radare2/actions/workflows/build.yml?query=branch%3Amaster) [](https://github.com/radareorg/radare2/actions/workflows/tcc.yml)
[](https://bestpractices.coreinfrastructure.org/projects/741) [](https://scan.coverity.com/projects/416) [](https://discord.gg/YBey7CR9jf)
当前的 git `master` 分支是 `6.1.5`,下一个发布版本将是 `6.1.6`。
### 描述
r2 是对 radare 的完全重写。它提供了一组库、工具和
插件,以简化逆向工程任务。在 LGPLv3 下分发,尽管
每个插件可以有不同的许可证(详情请参阅 `r2 -Lj`)
**radare** 项目最初是一个专注于取证工具的简单命令行十六进制编辑器。
如今,r2 已经成为一个功能丰富的低级命令行工具,
支持通过内置的 Javascript 解释器或通过 r2pipe 进行脚本编写。
r2 可以编辑本地硬盘上的文件,查看内核内存,以及本地或通过远程
gdb/windbg 服务器调试程序。r2 广泛的架构支持允许
你分析、模拟、调试、修改和反汇编任何二进制文件。
## 安装
下载最新的[发布](https://github.com/radareorg/radare2/releases)二进制文件。
推荐的 radare2 安装方式是从 Git 仓库源码安装:
```
git clone https://github.com/radareorg/radare2
radare2/sys/install.sh
```
* 运行 `sys/install.sh` 以进行默认的 acr+make+symlink 安装
* 支持 meson/ninja(也支持 muon/samu)和 make 构建。
### 源码构建
* r2 可以通过 `git` 安装,或通过 `pip` 使用 `r2env` 安装。
* Windows 构建需要 meson 以及 msvc 或 mingw 作为编译器
* 要卸载当前的 r2 构建,请运行 `make uninstall`
* 要卸载系统中所有的 r2 安装,请执行:`sudo make purge`
在 Windows 上,请使用 .bat 脚本和 msvc:
```
preconfigure.bat REM setup python, meson, ninja
configure.bat REM run meson b + vs project
make.bat REM run ninja -C b
prefix\bin\radare2.exe
```
## 常用插件:
使用 `r2pm` 工具,你可以浏览并安装许多使用 radare2 的插件和工具。
* [iaito](https://github.com/radareorg/iaito):官方 Qt 图形界面
* [keystone](https://github.com/radareorg/radare2-extras/tree/master/keystone) 使用 Keystone 库进行汇编指令
* [decai](https://github.com/radareorg/r2ai) 基于 AI 的反编译器
* [r2ai](https://github.com/radareorg/r2ai) 在 r2 中结合 Llama 于本地主机运行大语言模型!
* [r2dec](https://github.com/wargio/r2dec-js):一个基于 r2 并使用 JS 编写的反编译器,可通过 `pdd` 命令访问
* [r2diaphora](https://github.com/FernandoDoming/r2diaphora):在 radare2 之上构建的 [Diaphora](https://github.com/joxeankoret/diaphora) 二进制对比引擎
* [r2frida](https://github.com/nowsecure/r2frida):frida io 插件。使用 `r2 frida://0` 启动 r2 以使用它
* [r2ghidra](https://github.com/radareorg/r2ghidra):可通过 `pdg` 访问的独立原生 ghidra 反编译器
* [r4ghidra](https://github.com/radareorg/r4ghidra):在你的 Ghidra 中体验 radare 的乐趣
* [r2papi](https://github.com/radareorg/radare2-r2papi) 基于 r2pipe 的高阶 API
* [r2pipe](https://github.com/radareorg/radare2-r2pipe) 使用任何编程语言脚本化 radare2
* [r2poke](https://github.com/radareorg/radare2-extras/tree/master/r2poke) 与 GNU/Poke 集成,提供扩展的二进制解析功能
* [goresym](https://github.com/hanemile/radare2-GoReSym):将 GoReSym 符号导入为 flags
* [r2yara](https://github.com/radareorg/r2yara) 从 r2 运行 Yara 或从 Yara 使用 r2 原语
* [radius2](https://github.com/radareorg/radius2):基于 boolector 和 esil 的快速符号执行引擎
* [r2sarif](https://github.com/radareorg/r2sarif) 导入/扩展/导出 SARIF 文档
* [r2hermes](https://github.com/radareorg/r2hermes) 用于 React Native Hermes 字节码的反汇编器与分析器
* [r2renef](https://github.com/Ahmeth4n/r2renef) Radare2 的 Renef IO 插件 - 动态 Android 插桩
* [warrp](https://github.com/radareorg/warrp) 用于 binary ninja 的 WARP 格式的原生 radare2 插件
## 使用
这些是使用 r2 的初步步骤,阅读书籍或查找教程以获取更多详细信息
```
$ r2 /bin/ls # open file in read-only
> aaa # analyse the program (r2 -A)
> afl # list all functions (try aflt, aflm)
> px 32 # print 32 byte hexdump current block
> s sym.main # seek to main (using flag name)
> f~foo # filter flags matching 'foo' (internal |grep)
> iS;is # list sections and symbols (rabin2 -Ss)
> pdf; agf # disassembly and ascii-art function graph
> oo+;w hello # reopen in read-write and write a string
> ?*~... # interactive filter in all command help
> q # quit
```
许多插件默认已包含在 r2 中。但是你可以通过使用 [r2pm](https://github.com/radareorg/radare2-pm) 包管理器来扩展其功能。
```
r2pm -s 标签:CMS安全, DAST, DNS 反向解析, GauPlus, GDB, JARM, JavaScript, R2pipe, radare2, SNI设置, Wayback Machine, WinDbg, 二进制分析, 二进制文件, 云安全监控, 云安全运维, 云资产清单, 内存分析, 反汇编, 取证, 客户端加密, 开源, 恶意软件分析, 数据可视化, 汇编, 类Unix, 调试, 逆向工具, 逆向工程, 静态分析, 预握手
