堆(Heap)

radare2的dm子命令同样可以显示heap分布,对于那些想要查看heap及其内部数据的用户来说很有用。只需执行dmh命令即可显示heap的分布:

[0x7fae46236ca6]> dmh
  Malloc chunk @ 0x55a7ecbce250 [size: 0x411][allocated]
  Top chunk @ 0x55a7ecbce660 - [brk_start: 0x55a7ecbce000, brk_end: 0x55a7ecbef000]

还可以像下面这样以图的形式查看heap的布局:

[0x7fae46236ca6]> dmhg
Heap Layout
    .────────────────────────────────────.
    │    Malloc chunk @ 0x55a7ecbce000   │
    │ size: 0x251                        │
    │  fd: 0x0, bk: 0x0                  │
    `────────────────────────────────────'

    .───'


  .─────────────────────────────────────────────.
  │    Malloc chunk @ 0x55a7ecbce250            │
  │ size: 0x411                                 │
  │  fd: 0x57202c6f6c6c6548, bk: 0xa21646c726f  │
  `─────────────────────────────────────────────'

  .───'


.────────────────────────────────────────────────────.
│  Top chunk @ 0x55a7ecbce660                        │
│ [brk_start:0x55a7ecbce000, brk_end:0x55a7ecbef000] │
`────────────────────────────────────────────────────'

其它heap命令都在dmh命令下,查看dmh?的信息获取完整的命令列表:

若要打印带有demangled pointers的safe-linked链(glibc >= 2.32),要将 dbg.glibc.demangle 设置为true。

最后更新于

这有帮助吗?