SuperAPI AI 工具集

radare2

安全与审计

查看项目

更新于 10-16 13:57

技能介绍

radare2 技能面向 radare2 CLI 的二进制分析,重点是用命令行完成侦察、分析、定位、导出和轻量修改,不依赖 GUI。

用途 当用户希望用 r2 / radare2 分析 exe、dll、so、elf、apk、dex、wasm 等文件,询问 rabin2、rasm2、radiff2、rahash2、rax2 的用法,需要命令行反汇编、查看函数、字符串、导入导出、交叉引用或做 patch,或需要编写 radare2 批处理命令、-c 自动化命令与 r2pipe 脚本时,应优先使用本技能。若用户明确需要 GUI 逆向、Hex-Rays 风格伪代码或 IDA 工作流,宜考虑 ida-reverse;网页 JS 逆向则属 reverse-engineering 范围。

环境确认 不要假设 r2 可用,先检查 r2 -v、rabin2 -v。未安装时检查常见安装位置或提示安装。Windows 常见可执行文件包括 radare2.exe、rabin2.exe、rasm2.exe、radiff2.exe、rahash2.exe、rax2.exe、r2pm.exe。

内置资源 技能自带两个资源,优先复用:scripts/recon.ps1 是标准侦察脚本,输出基本信息、节区、导入、导出、字符串,以及可选的 r2 -A 自动分析摘要,调用方式为 powershell -File "<skill-root>\radare2\scripts\recon.ps1" -TargetPath "C:\path\to\sample.exe",需要附带自动分析时加 -RunAnalysis;references/cheatsheet.md 提供更多命令细节、场景模板与语法速查。

基本原则 先侦察后深挖,不要一上来就全量自动分析,先用轻量命令确认文件类型、架构、入口点、字符串与导入表,再决定是否做 aaa、aaaa 或定向分析。优先使用最小足够命令:看文件信息用 rabin2 -I,看字符串用 rabin2 -z,看导入导出用 rabin2 -i / rabin2 -E,交互分析则进入 r2 后执行局部命令。修改前保持谨慎,默认只读打开 r2 <file>,只有明确需要修改时才用 r2 -w <file> 或会话中 oo+,并先告知风险、提醒备份。

常用工作流 快速侦察:优先运行内置脚本;手动最小命令为 rabin2 -I、rabin2 -z、rabin2 -i、rabin2 -E,关注文件格式、位数、架构、平台、入口点地址、可疑字符串与导入函数。 交互式分析函数:进入 r2 后常用 aaa(常规自动分析)、afl(列出函数)、iz、iS、is、s entry0、pdf、VV、q;默认优先 aaa,不要一开始就用 aaaa,样本大或分析慢时可只分析入口附近再手动扩展。 定位 main 与关键逻辑:使用 afl~main、afl~sym.、iz~http、iz~error、axt <addr>,先从头、入口点、字符串引用入手,用 axt 查引用,再 s <addr>、pdf。 十六进制与内存查看:px 64、pd 20、psz、pxa。 二进制 patch(仅在用户明确要求修改时):r2 -w sample.exe,之后如 s 0x401000、wa nop、wa jmp 0x401050、wq;常见写操作有 wa <asm> 写汇编、wx <hex> 写原始字节、wq 写入并退出,修改前最好备份。 非交互自动化:r2 -A -q -c "afl;iz;ii;q" sample.exe;常用参数 -A 启动时自动分析、-q 安静模式、-c 执行命令串;命令多时整理成易读顺序,更推荐先用内置侦察脚本打底。

常用子工具 rabin2 用于静态信息提取:-I 基本信息、-S 节区、-s 符号、-i 导入、-E 导出、-z 字符串、-zz 更详细字符串。rasm2 用于快速汇编/反汇编,如 rasm2 -d "9090"、rasm2 -a x86 -b 64 "xor eax, eax"。radiff2 用于对比两个二进制,如 radiff2 old.exe new.exe、radiff2 -C old.exe new.exe。rahash2 用于算哈希,如 rahash2 -a md5 sample.exe、rahash2 -a sha256 sample.exe。rax2 用于进制和编码转换,如 rax2 0x401000、rax2 4198400、rax2 -s hello。

推荐分析顺序 遇到未知样本时:rabin2 -I 看格式、架构、入口点;rabin2 -z 看字符串;rabin2 -i 看导入函数;如需交互再进 r2;先 aaa,再 afl / iz / pdf;通过字符串引用、导入调用、入口流程逐步定位关键函数。该顺序噪音低,便于尽快建立方向感。

Windows 注意事项 路径含空格时命令必须正确加引号;若当前终端找不到 r2,可能是 PATH 刚更新,开新终端再试;有些样本需管理员权限读取,但默认不要主动提权,除非用户明确需要;对可疑样本做动态调试前,先确认用户意图。

输出风格 当需要实际分析文件时,先给出侦察结果摘要,再列出关键证据(字符串、导入、函数、地址),最后给出下一步建议或继续深入分析;不要只罗列命令而不解释为何这么做。

典型请求示例 分析 exe:先用 rabin2 -I/-z/-i,判断是否进入 r2,用 aaa、afl、pdf 深挖入口和关键字符串引用。定位字符串调用:用 iz~关键字 找地址,用 axt <addr> 找引用,跳到引用点 s <addr> 后 pdf。修改跳转:先确认目标地址,明确告知进入写模式,用 wa je <target> 或 wx,修改后再次反汇编验证。

应避免的做法 不要把 radare2 当成只有 aaa 一个命令的工具;不要在未说明风险时直接以写模式打开用户文件;不要在还没做基础侦察前就下结论;不要把网页 JS 逆向误导到本技能。

参考资料与路由 命令速查见 references/cheatsheet.md,标准侦察脚本见 scripts/recon.ps1。上游入口包括 skills/SKILL.md(总控)、routing.md,需要反编译/伪代码时可升级到 ida-reverse;下游出口为需动态分析时转 reverse-engineering/tools-dynamic.md(Frida/GDB),需深度反编译转 ida-reverse,PAT 发现有趣字符串后需交叉引用可转 ida-reverse;ida-reverse 为互补模块。

按需自举 入口脚本已接入统一自举系统,缺少 radare2 时不直接报错,而是自动尝试安装。r2、rabin2、rasm2、radiff2、rahash2、rax2 均可自动安装,方式为 GitHub Release ZIP (w64),自动下载解压到 %USERPROFILE%\Tools\radare2\。触发点为 scripts/recon.ps1 缺 rabin2 或 r2 时自动调用 bootstrap-reverse.ps1。自举失败(网络不通、GitHub API 限流等)时脚本会抛出明确错误并附手动安装链接;手动安装可从 https://github.com/radareorg/radare2/releases 下载 radare2-*-w64.zip,解压到 %USERPROFILE%\Tools\radare2\ 并确保 bin\ 目录在 PATH 中。

已知现象 Windows 下偶发 .sdb 缺失告警,某些 PE 文件在 rabin2 侦察时可能出现类似“ERROR: Cannot find ...\share\format\dll*.sdb”的告警;若主体输出仍正常返回,通常不影响基础侦察结论,可继续分析,不要因此直接判定分析失败。

限制 资料未说明具体收费、价格、性能指标或平台兼容性细节;涉及修改二进制时必须自行评估风险并做好备份。