开发者

How to disassemble elf stripped file in gdb?

How to dis开发者_Python百科assemble file after use strip command in gdb?


You can use GDB x/i command, e.g.

(gdb) x/4i 0x400390
   0x400390:    xor    %ebp,%ebp
   0x400392:    mov    %rdx,%r9
   0x400395:    pop    %rsi
   0x400396:    mov    %rsp,%rdx

But what you are probably looking for is objdump -d a.out


You can also use the disassemble command. It works like x /i , but it has the optional r nd m flags which, respectively, show you the raw encoding of the instructions and the source code line number correspondance.

With disassemble /rm:

(gdb) p free
$1 = {void (void *)} 0x7ffff7df0980 <free>
(gdb) disassemble /rm free,+13
Dump of assembler code from 0x7ffff7df0980 to 0x7ffff7df098d:
121 in dl-minimal.c
   0x00007ffff7df0987 <free+7>: 53                      push   %rbx
   0x00007ffff7df0988 <free+8>: 48 89 fb                mov    %rdi,%rbx

122 in dl-minimal.c
123 in dl-minimal.c
   0x00007ffff7df0980 <free+0>: 48 3b 3d 49 d8 20 00    cmp    0x20d849(%rip),%rdi        # 0x7ffff7ffe1d0 <alloc_last_block>
   0x00007ffff7df098b <free+11>:    74 03               je     0x7ffff7df0990 <free+16>

End of assembler dump

With x /i:

(gdb) p free
$3 = {void (void *)} 0x7ffff7df0980 <free>
(gdb) x /4i free
   0x7ffff7df0980 <free>:   cmp    0x20d849(%rip),%rdi        # 0x7ffff7ffe1d0 <alloc_last_block>
   0x7ffff7df0987 <free+7>: push   %rbx
   0x7ffff7df0988 <free+8>: mov    %rdi,%rbx
   0x7ffff7df098b <free+11>:    je     0x7ffff7df0990 <free+16>

The advantage (depending on your needs) of x /i over disassemble though, is that x /i accepts a size in instructions whereas disassemble takes a size in bytes.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜