下面给你一个用 radare2 在 Linux 下反汇编程序的实用入门指南,从安装到常见操作。
sudo apt update
sudo apt install radare2
git clone https://github.com/radareorg/radare2
cd radare2
sys/install.sh
安装完成后检查:
r2 -v
r2 ./target_binary
或只读模式(不修改文件):
r2 -r ./target_binary
进入 radare2 后,先进行分析:
aaa
aaa= 分析函数、符号、引用等(最常用)
查看分析进度:
afl
列出所有函数(function list)
假设有一个 main 函数:
s main
(seek 到 main)
然后:
pdf
示例输出:
┌ 23: int main (int argc, char **argv);
│ 0x00401136 push rbp
│ 0x00401137 mov rbp, rsp
│ 0x0040113a mov edi, str.Hello
│ 0x0040113f call sym.puts
│ 0x00401144 mov eax, 0
│ 0x00401149 pop rbp
└ 0x0040114a ret
| 命令 | 作用 |
|---|---|
aaa |
全分析 |
afl |
列出函数 |
s addr |
跳到地址 |
pdf |
反汇编当前函数 |
pd 20 |
反汇编 20 条指令 |
pdf @ main |
直接反汇编 main |
izz |
查看字符串 |
ai |
查看指令信息 |
e asm.bytes=true |
显示机器码 |
e asm.flavor=att |
切换为 AT&T 语法 |
V
进入可视化模式
再按:
p
切换不同视图(图形 / 汇编 / 十六进制)
退出:
q
izz
izz~password
然后:
axt @ addr
r2 ./crackme
aaa
afl
s main
pdf
afl + 地址分析ii 看导入函数-d 参数r2 -d ./program
如果你愿意,我可以:
你现在是想学基础使用还是实战逆向?