#1 楼
您可以使用radare2中的可视面板轻松查看它。这是一个预告片:安装
首先,从git仓库安装radare2:
$ git clone https://github.com/radare/radare2.git
$ cd radare2
$ ./sys/install.sh
调试
要使用radare2调试程序,请使用调试标志
-d
调用它:$ r2 -d /bin/ls
现在该程序在调试模式下打开。 />用
v!
显示可视面板模式。现在,您可以在左侧看到装配体,并在右侧看到堆叠面板。您可以相应地使用s
或S
进行逐步调试。使用?
在“可视面板”模式下列出更多命令。 其他一些显示堆栈的方法
pxa @ rsp
-显示带注释的十六进制转储pxw @ rsp
-显示十六进制字转储(32位)pxq @ rsp
-显示十六进制四字转储(64位)ad@r:SP
-分析堆栈数据要了解有关使用radare2进行调试的更多信息,建议阅读radare2书籍,尤其是“基本调试器会话”一章。
#2 楼
您可以使用gdb,例如,让我们看一下这个简单的程序#include <stdio.h>
int main(){
printf("hello world\n");
return 0;
}
gcc -o simple simple.c -g
运行gdb
gdb ./simple
在主函数中设置一个断点并运行
(gdb) b main
(gdb) r
现在我们可以看看寄存器内容
(gdb) i r
rax 0x400526 0x400526
rbx 0x0 0x0
rcx 0x0 0x0
rdx 0x7fffffffe518 0x7fffffffe518
rsi 0x7fffffffe508 0x7fffffffe508
rdi 0x1 0x1
rbp 0x7fffffffe420 0x7fffffffe420
rsp 0x7fffffffe420 0x7fffffffe420
r8 0x4005b0 0x4005b0
r9 0x7ffff7de78e0 0x7ffff7de78e0
r10 0x846 0x846
r11 0x7ffff7a2e740 0x7ffff7a2e740
r12 0x400430 0x400430
r13 0x7fffffffe500 0x7fffffffe500
r14 0x0 0x0
r15 0x0 0x0
rip 0x40052a 0x40052a <main+4>
eflags 0x246 [ PF ZF IF ]
cs 0x33 0x33
ss 0x2b 0x2b
ds 0x0 0x0
es 0x0 0x0
fs 0x0 0x0
gs 0x0 0x0
转储堆栈
(gdb) x/20x $sp
0x7fffffffe420: 0x00400540 0x00000000 0xf7a2e830 0x00007fff
0x7fffffffe430: 0x00000000 0x00000000 0xffffe508 0x00007fff
0x7fffffffe440: 0xf7ffcca0 0x00000001 0x00400526 0x00000000
0x7fffffffe450: 0x00000000 0x00000000 0xbbbdddd1 0xdfdea768
0x7fffffffe460: 0x00400430 0x00000000 0xffffe500 0x00007fff
显示说明
(gdb) list
1 #include <stdio.h>
2
3 int main(){
4 printf("hello world\n");
5 return 0;
6 }
7
8
(gdb) x/4i $pc
=> 0x40052a <main+4>: mov edi,0x4005c4
0x40052f <main+9>: call 0x400400 <puts@plt>
0x400534 <main+14>: mov eax,0x0
0x400539 <main+19>: pop rbp
等等...
#3 楼
请看一下它是否有用,并不断改进。这里是github主页上的一些注释:完全不依赖操作系统,没有依赖项:GEF包含电池并且可以在2秒内安装(不同于PwnDBG)。
快速限制依赖关系的数量和优化代码以尽可能快地创建命令(与PwnDBG不同)。
提供了50多个命令来彻底改变GDB中的体验。
通过为GDB Python API提供更多易于理解的布局,可扩展以创建其他命令。
在Python2和Python3上均能始终如一地工作。在任何GDB支持的体系结构中,例如x86-32 / 64,ARMv5 / 6/7,
AARCH64,SPARC,MIPS,PowerPC等(与PEDA不同)
适用于实际应用调试,利用开发,就像CTF一样(与PEDA或PwnDBG不同)
安装
wget -q -O- https://github.com/hugsy/gef/raw/master/gef.sh | sh
评论
仅链接答案并不理想,请扩展您的答案以包括相关详细信息,例如提供的功能。
–多项式
17年7月31日在12:23
评论
github.com/eteran/edb-debugger/wiki/Stack-View由mammon等各种作者寻找gdbinit,他们通常会解密并打印堆栈内容,或者只是使用x / x *(long *)esp,esp + 4编写脚本并在每个步骤上运行它,