如果要调试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的“基本调试器会话”说,“或者您可以通过指定其名称和参数来启动新程序”,但目前尚不清楚如何指定参数。

#1 楼

好像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!


另一种方法是在radare2内使用ood命令shell:

执行radare2 ./program,然后键入ood arg1 arg2 arg3ood命令用于“在调试器模式下重新打开(带有args)”。

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


#2 楼

rarun2

这属于rarun2的权限,此内容未在radare2书中进行记录,而是在radare2探索中进行了记录。从man rarun2开始


rr2rarun2)配置文件接受以下指令,描述为键=值条目,并以以'#'开头的行定义注释。

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


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

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