• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • Objdump

    Przeczytaj także...
    Plik obiektowy to rodzaj pliku binarnego generowanego przez kompilator lub asembler podczas kompilacji pliku z kodem źródłowym lub podczas łączenia plików obiektowych przez konsolidator (linker).Biblioteka współdzielona (ang. shared library, shared object) - jednolita, kompletna biblioteka ładowana w całości do pamięci podczas uruchamiania programu. Raz załadowana może być wykorzystywana przez wiele programów (jak wskazuje nazwa, jest współdzielona pomiędzy programami) bez potrzeby ponownego jej ładowania.
    GCC (ang. GNU Compiler Collection) - zestaw kompilatorów do różnych języków programowania rozwijany w ramach projektu GNU i udostępniany na licencji GPL oraz LGPL.

    objdump to program analizujący pliki obiektowe (tzn. ze skompilowanym kodem).

    Przykład[ | 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 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)

    Deasembler, dezasembler (z ang. disassembler) – program komputerowy, który tłumaczy język maszynowy na język asemblera - operacji odwrotnej do tej w asemblerze. Disassembler różni się od dekompilatora, który zakłada się na wysokim poziomie języka, a nie jako asembler.
    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
    




    Reklama

    Czas generowania strony: 0.019 sek.