当我使用radare2 调试器时,有时我不得不检查变量和内存。考虑以下指令
0x08048498 8b4508 mov eax, dword [ebp+arg2]
假设我知道 eax 中指向末尾为空终止的字符数组的指针(我的意思是字符串)。所以,ebp+arg2是指向那个字符串的指针。
当我输入时,ps @eax我得到了我所期望的,一个字符串。但是,我可以通过访问[ebp+arg_2]. 我试了很多事情,包括ps和ps/等。
当我使用radare2 调试器时,有时我不得不检查变量和内存。考虑以下指令
0x08048498 8b4508 mov eax, dword [ebp+arg2]
假设我知道 eax 中指向末尾为空终止的字符数组的指针(我的意思是字符串)。所以,ebp+arg2是指向那个字符串的指针。
当我输入时,ps @eax我得到了我所期望的,一个字符串。但是,我可以通过访问[ebp+arg_2]. 我试了很多事情,包括ps和ps/等。
查看afa命令(a用于分析、f用于函数和最新a用于参数),您应该找到 args 的值。
然后,您可以使用pxr(p如print,x和hexdump都可以,r作为参考)pxr 1 @ ebp+0x8,1以获得第一参考。
你应该得到相同的结果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。
我猜这是一个重命名的参数,所以你应该在函数头中查找它的值。