视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
re-radare2【文档与办公】rizin/radare2 工作流:命令行分析、pdf、V 模式。 触发词:radare2、rizin、rz、r2
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
pdf/V 模式探索;固件/批量样本脚本化分析-q -c 一行批处理)参考 [[re-analyze/platform-tips]]——命令行工具适配远程/低内存环境;平台分支的 Wine/QEMU 用户态仿真经验同样适用。
brew install rizinpacman -S rizindnf install rizin(Fedora 当前受支持版本与 EPEL 8/9/10 均有包);已 EOL 的 Fedora 先查发行版仓库,无包再用官方 release 或 rz-pmapt install rizin 会失败——改用官方 release 二进制(GitHub rizinorg/rizin releases:static tar.xz / Windows zip / macOS pkg)或 rz-pmapt install rizin(Kali 自有仓库有包,前提是使用 Kali 官方源)rz-bin.exe)rizin -v、rz-bin -Vrizin -v 为准。其他技能需要 rizin 安装步骤时引用本处矩阵,不各自复制发行版命令。apt install radare2 / dnf install radare2 / pacman -S radare2brew install radare2choco install radare2r2 -vpdf/axt/V 相同),但插件名与个别命令有差异(下文标注)rz-pm -ci rz-ghidra(rizin 包管理,需网络与编译工具链)pdg @ main 能输出伪 Crizin -A 全自动分析:
rizin -A sample
等待分析完成提示(大文件按 p 分页观察)。-A 等同 aaa(全量自动分析: 函数/交叉引用/字符串引用)。只做浅层时用 -a x86 等按需参数。退出: q。
aaa;轻量版 aa(函数+字符串引用,大文件首选)afl;单函数信息: afi @ main;手工定义函数: af @ 0x401000pdf 反汇编函数:
[0x00001040]> pdf @ sym.main
izz~entry 或 af @ 0x401000 手工定义函数后再 pdf @ 0x401000pdf = print disassembly function;pd 20 = 打印 20 条指令;pdr 打印带引用pdf @ <addr> | grep call 过滤调用afn 新名字 @ 地址;注释: CCu 注释 @ 地址axt 交叉引用:
[0x00001040]> axt @ 0x403000 # 谁引用 0x403000
[0x00001040]> axf @ sym.main # main 引用了谁
字符串引用: izz 列出全部字符串,axt @ str.<名称> 找引用点(字符串已被自动命名)。
izz 找关键字符串 → axt @ str.xxx → 跳到引用函数 s <地址> → pdf——与 [[re-ida]] 的 Alt+T→x→F5 同思路可视化 V 模式:
[0x00001040]> V
p 切换视图(反汇编/十六进制/图形)s 后跟地址/符号跳转(s sym.main);f 定义函数;d 反汇编切换V 内按 p 到 graph 视图,方向键导航——梳理控制流用q;退出 rizin: 再 q脚本与 rz-ghidra 反编译:
# 一行命令批处理
rizin -q -c 'aaa; pdf @ sym.main; axt @ 0x403000; quit' sample
# 反编译
rz-pm -ci rz-ghidra
rizin -c 'aaa; pdg @ sym.check' sample
pdg = Ghidra 风格伪 C 输出;无插件时退回 pdf + 人工还原。
rizin -i script.r2 sample(或交互内 . script.r2);脚本里每条命令一行,quit 结尾调试模式(rz 内置调试器):
rizin -d ./sample # 以调试模式启动
rizin -d -p 1234 # attach pid
[0x7f...]> db 0x401000 # 断点(db = debugger breakpoint,与 r2 相同)
[0x7f...]> dc # 继续(continue)
[0x7f...]> ds / dso # 单步 / 步过
[0x7f...]> dr eax=0 # 改寄存器(绕过校验常用)
[0x7f...]> px @ rsp # 看栈内容
[0x7f...]> drr # 全部寄存器
db(无参数列出);删断点: db- 地址;条件断点: db 地址:条件(如 db 0x401000:eax==1)搜索与内存操作:
[0x00001040]> /x 5548 # 十六进制搜索
[0x00001040]> /v 0xdeadbeef # 32 位值搜索(小端)
[0x00001040]> /w "password" # 字符串搜索
[0x00001040]> /r sym.check # 引用搜索(找谁引用了符号)
[0x00001040]> wx 9090 @ 0x401000 # 写字节(NOP 补丁)
[0x00001040]> px 32 @ 0x401000 # 读 32 字节
rz-bin -I sample(架构/入口/段)、rz-bin -z sample(字符串)、rz-bin -i sample(导入)——等价 r2 的 rabin2 -I/-z/-i项目与导出:
[0x00001040]> Ps project_name # 保存项目(含分析结果与标注)
[0x00001040]> Po project_name # 打开项目
[0x00001040]> Pj > out.json # 导出 JSON 项目(供脚本二次处理)
Po 直接续用RE_DECOMPILER=radare2)-A 前信息少:不开分析则无函数边界/无交叉引用——先 -A(或 aaa),再看符号aaa 在超大固件上极慢——用 aa(轻量)或 aa~ 限制,或只对目标段 af @ addr 手工分析r2pm→rz-pm)、个别命令名不同——先 rz? 查帮助再执行pdf 依赖函数边界——无符号时 af 先定义,否则输出为空或错位e scr.color=0 去色(-2 只关 stderr 告警,不去色)