objdump
Wygląd
objdump to program analizujący pliki obiektowe (tzn. ze skompilowanym kodem).
Przykład
[edytuj | edytuj kod]Lista dynamicznie relokowanych symboli, które będą podłączane do odpowiedniej biblioteki dzielonej
$ objdump -R hello
hello: file format elf32-i386
DYNAMIC RELOCATION RECORDS
OFFSET TYPE VALUE
080495b4 R_386_GLOB_DAT __gmon_start__
080495ac R_386_JUMP_SLOT __libc_start_main
080495b0 R_386_JUMP_SLOT printf
Przykład 2
[edytuj | edytuj kod]Fragment wyjścia deasemblacji programu hello world (objdump -S ./hello
).
Odpowiednie fragmenty są oznaczone odpowiadającymi im częściami kodu (które są zachowane w pliku obiektowym dzięki opcji -g
kompilatora gcc)
08048364 <main>:
#include <stdio.h>
int main()
{
8048364: 55 push %ebp
8048365: 89 e5 mov %esp,%ebp
8048367: 83 ec 08 sub $0x8,%esp
804836a: 83 e4 f0 and $0xfffffff0,%esp
804836d: b8 00 00 00 00 mov $0x0,%eax
8048372: 29 c4 sub %eax,%esp
printf("Hello, world\n");
8048374: c7 04 24 a4 84 04 08 movl $0x80484a4,(%esp,1)
804837b: e8 08 ff ff ff call 8048288 <_init+0x38>
return 0;
8048380: b8 00 00 00 00 mov $0x0,%eax
}
8048385: c9 leave
8048386: c3 ret
8048387: 90 nop
8048388: 90 nop
8048389: 90 nop
804838a: 90 nop
804838b: 90 nop
804838c: 90 nop
804838d: 90 nop
804838e: 90 nop
804838f: 90 nop
08048390 <__libc_csu_init>:
8048390: 55 push %ebp
8048391: 89 e5 mov %esp,%ebp
8048393: 57 push %edi
8048394: 56 push %esi
8048395: 31 f6 xor %esi,%esi
8048397: 53 push %ebx
8048398: 83 ec 0c sub $0xc,%esp
804839b: e8 a0 00 00 00 call 8048440 <__i686.get_pc_thunk.bx>
80483a0: 81 c3 00 12 00 00 add $0x1200,%ebx
80483a6: e8 a5 fe ff ff call 8048250 <_init>
80483ab: 8d 93 14 ff ff ff lea 0xffffff14(%ebx),%edx
80483b1: 8d 83 14 ff ff ff lea 0xffffff14(%ebx),%eax
80483b7: 29 c2 sub %eax,%edx
80483b9: c1 fa 02 sar $0x2,%edx
80483bc: 39 d6 cmp %edx,%esi
80483be: 73 1c jae 80483dc <__libc_csu_init+0x4c>
80483c0: 89 d7 mov %edx,%edi
80483c2: 8d b4 26 00 00 00 00 lea 0x0(%esi,1),%esi
80483c9: 8d bc 27 00 00 00 00 lea 0x0(%edi,1),%edi
80483d0: ff 94 b3 14 ff ff ff call *0xffffff14(%ebx,%esi,4)
80483d7: 46 inc %esi
80483d8: 39 fe cmp %edi,%esi
80483da: 72 f4 jb 80483d0 <__libc_csu_init+0x40>
80483dc: 83 c4 0c add $0xc,%esp
80483df: 5b pop %ebx
80483e0: 5e pop %esi
80483e1: 5f pop %edi
80483e2: 5d pop %ebp
80483e3: c3 ret
80483e4: 8d b6 00 00 00 00 lea 0x0(%esi),%esi
80483ea: 8d bf 00 00 00 00 lea 0x0(%edi),%edi