ELF形式のの情報を読み取ることができる「readelf」コマンド。
今回は、プログラムヘッダーを取得したい場合について、説明します。
使用するオプションは「-l」オプション。
まずは、確認対象の「cat」コマンドのファイル形式を確認します。
1 2 3 |
# file /bin/cat /bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped # |
「ELF」となっていることがわかります。
続けて、プログラムヘッダーを確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# readelf -l /bin/cat Elf file type is EXEC (Executable file) Entry point 0x401850 There are 9 program headers, starting at offset 64 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flags Align PHDR 0x0000000000000040 0x0000000000400040 0x0000000000400040 0x00000000000001f8 0x00000000000001f8 R E 8 INTERP 0x0000000000000238 0x0000000000400238 0x0000000000400238 0x000000000000001c 0x000000000000001c R 1 [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] LOAD 0x0000000000000000 0x0000000000400000 0x0000000000400000 0x000000000000a204 0x000000000000a204 R E 200000 LOAD 0x000000000000a208 0x000000000060a208 0x000000000060a208 0x0000000000000648 0x0000000000001000 RW 200000 LOAD 0x000000000000a850 0x000000000080a850 0x000000000080a850 0x0000000000000327 0x0000000000000327 RW 200000 DYNAMIC 0x000000000000a3e8 0x000000000060a3e8 0x000000000060a3e8 0x0000000000000190 0x0000000000000190 RW 8 NOTE 0x0000000000000254 0x0000000000400254 0x0000000000400254 0x0000000000000044 0x0000000000000044 R 4 GNU_EH_FRAME 0x0000000000009414 0x0000000000409414 0x0000000000409414 0x000000000000027c 0x000000000000027c R 4 GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 RW 8 Section to Segment mapping: Segment Sections... 00 01 .interp 02 .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .gnu.liblist .gnu.conflict .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame 03 .ctors .dtors .jcr .data.rel.ro .dynamic .got .got.plt .data .bss 04 .dynstr 05 .dynamic 06 .note.ABI-tag .note.gnu.build-id 07 .eh_frame_hdr 08 # |
以上、プログラムヘッダーの確認方法でした。