实际上,我正在学习缓冲区溢出攻击。那么,我们能否找出缓冲区地址(我在程序中使用缓冲区变量,以便在写入缓冲区时,我将在堆栈中进行更改)?
答案1
是的,只要你的变量没有被优化掉。
例如,ls
与调试符号一起使用:
gdb ls
>>> break main
>>> run
>>> print argv
$1 = (char **) 0x7fffffffdd78
在本例中,argv
是一个指针本身。如果您想要非指针变量的地址或指针的地址,请&
像在 C 中一样使用;gdb
将为您提供地址,如上所述,或者告诉您变量是否未存储在内存中:
>>> printf &argc
Address requested for identifier "argc" which is in register $rdi
在 x86 上, 的内容SP
将告诉您堆栈在哪里:
>>> i r sp
sp 0x7fffffffdc98 0x7fffffffdc98