fileコマンドを利用すると,特定のファイルがバイナリであるか,テキスト形式であるかなどが調査できる。
# file /usr/sbin/httpd /usr/sbin/httpd: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses sharedlibs), stripped |
バイナリ形式のファイルを指定した場合,ほとんどの場合で「ELF」という文字列が見られるだろう。
このELFとは「Executable and Linking Format」の略であり,Red Hatを始めとするLinuxディストリビューションの多くでは標準バイナリ形式として採用されているものだ。
従来までは,「a.out」,「COFF」(Common Object File Format)と呼ばれるバイナリフォーマットが占めていたが,ELFでは動的な共有ライブラリの利用と,C++言語のサポートが容易という利点が挙げられる。
次のように指定すれば,ELF形式のバイナリに含まれるヘッダ情報を知ることが可能だ。表示には,次のように「Intel 80386」などのプラットフォーム情報などが含まれている。
# readelf -h /usr/sbin/httpd
ELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: Intel 80386 Version: 0x1 Entry point address: 0x804fea0 Start of program headers: 52 (bytes into file) Start of section headers: 240940 (bytes into file) Flags: 0x0 Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 6 Size of section headers: 40 (bytes) Number of section headers: 24 Section header string table index: 23 |
Copyright © ITmedia, Inc. All Rights Reserved.