如何使用带有命令行参数(参数)的 Radare 调试器?

逆向工程 调试 调试器 雷达2
2021-06-29 09:33:31

如果我想调试ls我可以运行,

radare -d /bin/ls

但是,我如何向 提供参数或参数ls就像我想跑步时会做的那样radare -d /bin/ls -1我试过这样没有引号,它返回

radare2: 无效选项 -- '1'

我也试过引用整件事

radare2 -d "/bin/ls -1"
Could not execvp: No such file or directory
[w] Cannot open 'dbg:///bin/ls\ -1' for writing.

Radare2book 的“Basic Debugger Session”说,“或者你可以通过指定它的名称和参数来启动一个新程序”,但不清楚你如何指定参数。

2个回答

似乎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 arg3ood命令用于“在调试器模式下重新打开(带参数) ”。

$ 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 配置文件。

rarun2

这属于其范围,rarun2在radare2 书中没有记录,而是在radare2-explorations 中记录man rarun2

rr2rarun2)的配置文件接受以下的指示,被描述为限定为以“#”键行=值条目和评论。

arg[0-N] 为传递给程序的参数 N 设置值

因此,您可以简单地通过创建配置文件或执行此操作来运行它

r2 -R arg0="-1" -d /bin/ls