pwndbg + pwngdb + angelheap
Gdb 原生命令
- c = continue
- ni = step 汇编级 n = step C语言级
- si = stepi
- b = break
- 添加地址断点,当运行到端点会停下来
- 用 delete,disable,enable 修改断点
- watch
- 添加变量断点
- watch <expression> 当变量改变时会停下来
- watch -l <address> 当地址指向的变量改变时会停下来
- rwatch -l <address> 当地址指向的变量被读取时会停下来
- watch var if xxx 添加条件
- x/<n/f/u> <addr>
- 打印内存地址中的值
- n 表示内存单元个数
- f 表示输出格式
- i 汇编
- t 二进制格式
- o 八进制格式
- d 十进制有符号整型
- u 十进制无符号整型
- x 十六进制,补齐前缀 0
- a 十六进制,不补齐
- f 浮点数
- c 字符
- s 字符串
- u 表示内存单元大小
- 默认为机器字大小
- b 表示单字节
- h 表示双字节
- w 表示四字节
- g 表示八字节
- p/<n/f/u> = print
- 打印
- p *(struct elfhdr*) 0x10000
- p *argv@argc
- info
- info registers
- info frame
- info breakpoints
- info locals
- info args
- frame <n>
- list <location>
- bt = backtrace
- layout split
- 进入分离模式,可以查看当前运行的源码和反汇编
- Ctrl+x, a 退出 layout 模式
- up & down
- set
- 修改变量或寄存器的值
- set var $pc=0x3ffffff000
回溯调试
- record
- reverse-*
- 加上一些常用的命令,可实现反向运行
- 如 reverse-nexti,reverse-finish
Pwndbg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| parseheap
pwndbg> parseheap addr prev size status fd bk 0x603000 0x0 0x290 Used None None 0x603290 0x0 0x20 Used None None
bins
pwndbg> bins tcachebins 0x20 [ 1]: 0x6032c0 ◂— 0x0 fastbins 0x20: 0x0 0x30: 0x0 0x40: 0x0 0x50: 0x0 0x60: 0x0 0x70: 0x0 0x80: 0x0 unsortedbin all: 0x0 smallbins empty largebins empty
vis
pwndbg>
|
Angelheap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| chunkinfo + chunkheader address
pwndbg> chunkinfo 0x603000 ================================== Chunk info ================================== Status : Used Freeable : True prev_size : 0x0 size : 0x290 prev_inused : 1 is_mmap : 0 non_mainarea : 0
chunkptr + chunkdata address
pwndbg> chunkptr 0x603010 ================================== Chunk info ================================== Status : Used Freeable : True prev_size : 0x0 size : 0x290 prev_inused : 1 is_mmap : 0 non_mainarea : 0
heapinfo 查看堆的情况
pwndbg> heapinfo (0x20) fastbin[0]: 0x0 (0x30) fastbin[1]: 0x0 (0x40) fastbin[2]: 0x0 (0x50) fastbin[3]: 0x0 (0x60) fastbin[4]: 0x0 (0x70) fastbin[5]: 0x0 (0x80) fastbin[6]: 0x0 (0x90) fastbin[7]: 0x0 (0xa0) fastbin[8]: 0x0 (0xb0) fastbin[9]: 0x0 top: 0x6032d0 (size : 0x20d30) last_remainder: 0x0 (size : 0x0) unsortbin: 0x0 (0x20) tcache_entry[0](1): 0x6032c0
|