2014年2月15日土曜日

リンクされているダイナミックライブラリを調べる (objdump -p)

リンクされているダイナミックリンクライブラリを調べる場合、通常は ldd を使います。
ldd 以外の方法で調べるには、objdump コマンドを使います。
オプションは "-p"。

bash を試しに確認した場合の例。
NEEDED に libtinfo.so.5, libdl.so.2, libc.so.6 とあります。
組み込みの時は、クロス環境の objdump コマンドを使えば OK ( こっちの方で使うことがある )。

$ objdump -p /bin/bash

/bin/bash:     file format elf64-x86-64

Program Header:
    PHDR off    0x0000000000000040 vaddr 0x0000000000400040 paddr 0x0000000000400040 align 2**3
         filesz 0x00000000000001f8 memsz 0x00000000000001f8 flags r-x
  INTERP off    0x0000000000000238 vaddr 0x0000000000400238 paddr 0x0000000000400238 align 2**0
         filesz 0x000000000000001c memsz 0x000000000000001c flags r--
    LOAD off    0x0000000000000000 vaddr 0x0000000000400000 paddr 0x0000000000400000 align 2**21
         filesz 0x00000000000dfea4 memsz 0x00000000000dfea4 flags r-x
    LOAD off    0x00000000000e0e08 vaddr 0x00000000006e0e08 paddr 0x00000000006e0e08 align 2**21
         filesz 0x0000000000008c88 memsz 0x000000000000e840 flags rw-
 DYNAMIC off    0x00000000000e0e30 vaddr 0x00000000006e0e30 paddr 0x00000000006e0e30 align 2**3
         filesz 0x00000000000001b0 memsz 0x00000000000001b0 flags rw-
    NOTE off    0x0000000000000254 vaddr 0x0000000000400254 paddr 0x0000000000400254 align 2**2
         filesz 0x0000000000000044 memsz 0x0000000000000044 flags r--
EH_FRAME off    0x00000000000c8770 vaddr 0x00000000004c8770 paddr 0x00000000004c8770 align 2**2
         filesz 0x0000000000003cec memsz 0x0000000000003cec flags r--
   STACK off    0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**3
         filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw-
   RELRO off    0x00000000000e0e08 vaddr 0x00000000006e0e08 paddr 0x00000000006e0e08 align 2**0
         filesz 0x00000000000001f8 memsz 0x00000000000001f8 flags r--

Dynamic Section:
  NEEDED               libtinfo.so.5
  NEEDED               libdl.so.2
  NEEDED               libc.so.6
  INIT                 0x000000000041af30
  FINI                 0x00000000004aafa8
  GNU_HASH             0x0000000000400298
  STRTAB               0x00000000004105b8
  SYMTAB               0x00000000004039a0
  STRSZ                0x0000000000008410
  SYMENT               0x0000000000000018
  DEBUG                0x0000000000000000
  PLTGOT               0x00000000006e0fe8
  PLTRELSZ             0x00000000000012f0
  PLTREL               0x0000000000000007
  JMPREL               0x0000000000419c40
  RELA                 0x0000000000419b80
  RELASZ               0x00000000000000c0
  RELAENT              0x0000000000000018
  VERNEED              0x0000000000419ad0
  VERNEEDNUM           0x0000000000000002
  VERSYM               0x00000000004189c8

Version References:
  required from libdl.so.2:
    0x09691a75 0x00 09 GLIBC_2.2.5
  required from libc.so.6:
    0x06969191 0x00 10 GLIBC_2.11
    0x06969194 0x00 08 GLIBC_2.14
    0x0d696918 0x00 07 GLIBC_2.8
    0x06969195 0x00 06 GLIBC_2.15
    0x0d696914 0x00 05 GLIBC_2.4
    0x09691974 0x00 04 GLIBC_2.3.4
    0x0d696913 0x00 03 GLIBC_2.3
    0x09691a75 0x00 02 GLIBC_2.2.5

● ダイナミックリンク, ldd 以外, objdump, dynamic link

0 件のコメント: