Objdump
objdump to program analizujący pliki obiektowe (tzn. ze skompilowanym kodem).
Przykład
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
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