diff --git a/tools/radare2.yaml b/tools/radare2.yaml index b73c2c0d..bbf59c64 100644 --- a/tools/radare2.yaml +++ b/tools/radare2.yaml @@ -2,49 +2,312 @@ name: "radare2" command: "r2" enabled: true -short_description: "二进制分析和逆向工程框架" +short_description: "二进制分析和逆向工程框架,支持反汇编、调试和脚本分析" description: | - Radare2是一个完整的二进制分析和逆向工程框架。 + Radare2是一个完整的二进制分析和逆向工程框架,支持多种架构和文件格式。 **主要功能:** - - 反汇编和反编译 - - 调试支持 - - 脚本支持 - - 多种架构支持 + - 反汇编和反编译:支持多种架构(x86, ARM, MIPS等) + - 调试支持:本地和远程调试 + - 脚本支持:支持r2pipe脚本和r2命令脚本 + - 多种文件格式:ELF, PE, Mach-O, 固件等 + - 交互式分析:命令行界面和可视化模式 + - 自动化分析:批量分析和脚本化分析 **使用场景:** - - 二进制分析 - - 逆向工程 - - 漏洞研究 + - 二进制文件分析 + - 逆向工程和漏洞研究 - 恶意软件分析 + - CTF竞赛中的逆向题目 + - 固件分析 + - 漏洞利用开发 + + **注意事项:** + - 可以使用 -c 参数执行命令后退出(非交互模式) + - 可以使用 -i 参数执行脚本文件 + - 可以使用 -q 参数静默模式(不显示启动信息) + - 可以使用 -A 参数自动分析二进制文件 + - 可以使用 -d 参数附加到进程进行调试 parameters: - - name: "binary" + - name: "target" type: "string" - description: "要分析的二进制文件路径" + description: | + 目标文件、进程ID或特殊值。 + + **格式:** + - 文件路径: "/path/to/binary" + - 进程ID: "1234" (需要配合 -d 参数) + - 特殊值: "-" (从stdin读取), "--" (交互模式), "=" (从环境变量读取) + + **示例值:** + - 二进制文件: "/tmp/vulnerable" + - 进程调试: "1234" (配合 -d) + - 从stdin: "-" + + **注意事项:** + - 必需参数,不能为空 + - 如果指定进程ID,需要配合 -d 参数使用 required: true position: 0 format: "positional" - name: "commands" type: "string" - description: "要执行的Radare2命令(分号分隔)" + description: | + 要执行的Radare2命令。可以是单个命令或多个命令(用分号分隔)。 + + **格式:** + - 单个命令: "aaa" (自动分析) + - 多个命令: "aaa; pdf @main; VV" (分析、反汇编main函数、可视化) + + **常用命令:** + - "aaa": 自动分析所有函数 + - "afl": 列出所有函数 + - "pdf @main": 反汇编main函数 + - "px 64": 以十六进制显示64字节 + - "VV": 进入可视化模式 + - "i": 显示文件信息 + - "iz": 显示字符串 + + **示例值:** + - "aaa" (自动分析) + - "aaa; pdf @main" (分析并反汇编main函数) + - "i; iz" (显示信息和字符串) + + **注意事项:** + - 多个命令用分号(;)分隔 + - 执行完命令后程序会退出(非交互模式) required: false flag: "-c" format: "flag" - + + - name: "script_file" + type: "string" + description: | + 要执行的脚本文件路径。脚本文件包含Radare2命令,每行一个命令。 + + **格式:** + - 脚本文件路径: "/path/to/script.r2" + + **示例值:** + - "/tmp/analyze.r2" + - "./scripts/auto_analyze.r2" + + **注意事项:** + - 脚本文件中的命令会按顺序执行 + - 脚本执行完后程序会退出 + required: false + flag: "-i" + format: "flag" + + - name: "arch" + type: "string" + description: | + 指定目标架构。 + + **常用架构:** + - "x86": 32位x86 + - "x86_64": 64位x86 + - "arm": ARM架构 + - "arm64": ARM64架构 + - "mips": MIPS架构 + - "ppc": PowerPC架构 + + **示例值:** + - "x86" + - "x86_64" + - "arm" + - "arm64" + + **注意事项:** + - 如果不指定,radare2会尝试自动检测 + - 某些架构可能需要额外的配置 + required: false + flag: "-a" + format: "flag" + + - name: "bits" + type: "int" + description: | + 指定目标位数(16, 32, 64)。 + + **示例值:** + - 16 (16位) + - 32 (32位) + - 64 (64位) + + **注意事项:** + - 通常与 -a 参数配合使用 + - 如果不指定,radare2会尝试自动检测 + required: false + flag: "-b" + format: "flag" + + - name: "auto_analyze" + type: "bool" + description: | + 自动分析二进制文件。相当于执行 "aaa" 命令。 + + **使用场景:** + - 快速分析二进制文件 + - 批量分析 + + **注意事项:** + - 启用后会自动分析所有函数 + - 可能需要较长时间 + required: false + flag: "-A" + format: "flag" + default: false + + - name: "debug" + type: "bool" + description: | + 调试模式。可以附加到进程或调试文件。 + + **使用场景:** + - 附加到运行中的进程 + - 调试二进制文件 + + **注意事项:** + - 需要适当的权限 + - 如果target是进程ID,必须启用此选项 + required: false + flag: "-d" + format: "flag" + default: false + + - name: "quiet" + type: "bool" + description: | + 静默模式。不显示启动信息和提示符。 + + **使用场景:** + - 脚本化使用 + - 批量分析 + - 自动化工具调用 + + **注意事项:** + - 适合非交互式使用 + - 减少输出噪音 + required: false + flag: "-q" + format: "flag" + default: false + + - name: "seek" + type: "string" + description: | + 设置起始地址。可以是十六进制地址或表达式。 + + **格式:** + - 十六进制: "0x400000" + - 表达式: "main+0x10" + + **示例值:** + - "0x400000" + - "main" + - "0x1000" + + **注意事项:** + - 地址可以是十六进制或符号名 + - 用于从特定位置开始分析 + required: false + flag: "-s" + format: "flag" + + - name: "base_address" + type: "string" + description: | + 设置基址(base address)。用于加载地址。 + + **格式:** + - 十六进制地址: "0x400000" + + **示例值:** + - "0x400000" + - "0x1000000" + + **注意事项:** + - 用于指定二进制文件的加载地址 + - 通常用于分析固件或内存转储 + required: false + flag: "-B" + format: "flag" + + - name: "eval" + type: "string" + description: | + 设置配置变量。格式为 key=value。 + + **格式:** + - "key=value" + - 多个变量用空格分隔: "asm.arch=x86 asm.bits=32" + + **示例值:** + - "asm.arch=x86" + - "asm.bits=32" + - "scr.color=false" + + **注意事项:** + - 用于设置radare2的配置变量 + - 多个变量用空格分隔 + required: false + flag: "-e" + format: "flag" + + - name: "project" + type: "string" + description: | + 加载或保存项目文件。 + + **格式:** + - 项目文件路径: "/path/to/project.r2" + + **示例值:** + - "./project.r2" + - "/tmp/analysis.r2" + + **注意事项:** + - 项目文件保存分析状态和配置 + - 可以用于恢复之前的分析 + required: false + flag: "-p" + format: "flag" + - name: "additional_args" type: "string" description: | 额外的radare2参数。用于传递未在参数列表中定义的radare2选项。 + **可用选项:** + - "-C": 强制使用颜色输出 + - "-f": 强制打开文件(即使格式不匹配) + - "-L": 列出支持的插件 + - "-M": 启用写模式 + - "-n": 不加载配置文件 + - "-N": 不执行脚本 + - "-S": 在调试模式下启动 + - "-t": 使用线程模式 + - "-u": 使用unicorn引擎 + - "-v": 显示版本信息 + - "-w": 写模式 + - "-z": 扫描字符串 + - "-X": 执行r2pipe脚本 + - "-P patch": 应用补丁 + - "-m maddr": 映射地址 + **示例值:** - - 根据工具特性添加常用参数示例 + - "-w" (写模式) + - "-n" (不加载配置文件) + - "-M" (启用写模式) + - "-z" (扫描字符串) **注意事项:** - 多个参数用空格分隔 - 确保参数格式正确,避免命令注入 - 此参数会直接追加到命令末尾 required: false - format: "positional" \ No newline at end of file + format: "positional"