如何在调试会话中从radare2中的指针打印

逆向工程 调试 调试器 雷达2
2021-06-13 07:37:12

当我使用radare2 调试器时,有时我不得不检查变量和内存。考虑以下指令

0x08048498      8b4508         mov eax, dword [ebp+arg2]

假设我知道 eax 中指向末尾为空终止的字符数组的指针(我的意思是字符串)。所以,ebp+arg2是指向那个字符串的指针。

当我输入时,ps @eax我得到了我所期望的,一个字符串。但是,我可以通过访问[ebp+arg_2]. 我试了很多事情,包括psps/等。

2个回答

查看afa命令(a用于分析、f用于函数和最新a用于参数),您应该找到 args 的值。

然后,您可以使用pxrpprintx和hexdump都可以,r作为参考)pxr 1 @ ebp+0x81以获得第一参考。

你应该得到相同的结果pf S @ ebp+arg2

pf[?][.nam] [fmt]              print formatted data (pf.name, pf.name $<expr>)
S       64bit pointer to string (8 bytes)

pf S 代表由 64 位指针引用的打印格式化空终止字符串。

您可能必须使用 arg2 的实际值,例如 0x8。

我猜这是一个重命名的参数,所以你应该在函数头中查找它的值。