似乎radare在传递以破折号(“-”)开头的参数方面存在问题。请考虑打开一个问题。
无论如何,您可以通过多种方式将参数传递给radare2 调试程序。
最简单的方法是:
r2 -d program arg1 arg2 arg3
- r2是radare2 的别名。
- -d告诉radare2 调试可执行文件。
- arg1..3是由radare2 传递给可执行文件的参数。
例如:
$ r2 -d echo Hello, World!
Process with PID 4755 started...
= attach 4755 4755
bin.baddr 0x00400000
Using 0x400000
asm.bits 64
-- You haxor! Me jane?
[0x7f9b1b000c30]> dc
Hello, World!
另一种方法是ood
在radare2 shell 中使用命令:
执行radare2 ./program
,然后输入ood arg1 arg2 arg3
。该ood
命令用于“在调试器模式下重新打开(带参数) ”。
$ r2 /bin/ls
-- Use V! to enter into the visual panels mode (dwm style)
[0x004049a0]> doo -la
Process with PID 4757 started...
File dbg:///bin/ls -la reopened in read-write mode
= attach 4757 4757
4757
[0x7f5f36600c30]> dc
total 206
drwxrwxrwx 0 root root 512 Feb 13 04:25 .
drwxrwxrwx 0 root root 512 Jan 16 05:30 ..
您还可以ood
使用反引号调用动态参数。例如,我们希望使用系统文件中的内容作为参数来调试我们的程序:
ood `!cat file.txt`
说 file.txt 内容是 'foo bar' 所以这相当于执行 ood foo bar
- 反引号用于传递radare2 命令的输出。
- !正在运行 system(3) 中的给定命令。
另一种将参数传递给radare2 调试程序的方法是使用rarun2
配置文件:
$ r2 -R profile.rr2 -d program
$ cat profile.rr2
#!/usr/bin/rarun2
arg1=foo
arg2=bar
- -R [rarun2] 指定要加载的 rarun2 配置文件。