我正在使用Radare2(最新提交)进行练习。

radare2 2.3.0-git 16814 @ linux-x86-64 git.2.2.0-5-g61a903315


在我的会话期间,我需要将局部变量重命名为更易于理解的名称,例如

var int local_110h @ rbp-0x110
:> afvn local_110h commandLine


是否存在命令来检查此变量中的内容以及最终指向的内容?
px @ commandLine
px @ [commandLine]


但这不起作用:

:>px @ commandLine
Invalid address (commandLine)
|ERROR| Invalid command 'px @ commandLine' (0x70)


通过rbp可以正常工作。

px @ rbp-0x100


#1 楼

您应该使用afvd

[0x00402a00]> afv?
...
...
| afvd name     output r2 command for displaying the value of args/locals in the debugger
...
...


仅执行afvd会打印出函数中所有局部变量的值,如果使用变量名执行它,则会得到radare2结果是:

[0x00402a00]> afvn local_110h commandLine
[0x00402a00]> afvd commandLine
pxr $w @rsp+0x110


您将得到pxr $w @rsp+0x110,它是radare2命令。

您可以在其前面添加一个点.要执行它:

[0x00402a00]> .afvd commandLine
0x7fffdc9e9258  0x28ffedf4ccd19d64   d......(


例如,如果只需要地址,则可以使用radare的内部grep。 />
有关radare的grep的更多信息,请执行~?