Chapter 02無料公開

作成するapplication

Drumato
Drumato
2021.08.29に更新

作成するapplication

elf-parser

この本の内容を一通りさらうと,以下のようなparserが完成します.
https://github.com/Drumato/elf-parser-in-rust-book/tree/impl で同様に試せます.

$ cargo build
$ cargo run target/debug/elf-parser-in-rust-book
ELF Header:
        Class: Bit64
        Data: Lsb
        Entry: 0x9720
        PHT Info:
                Offset: 64
                Entries: 12
                Entry Size: 0x38
        SHT Info:
                Offset: 0x464758
                Entries: 43
                Entry Size: 0x40
                Name Table Index: 42
Sections[0]:
        Name:
        Type: Null
        Size: 0x0
        Entry Size: 0x0
Sections[1]:
        Name:
        Type: ProgBits
        Size: 0x1c
        Entry Size: 0x0
Sections[2]:
        Name:
        Type: Note
        Size: 0x20
        Entry Size: 0x0
# stripped

testdataの作成

ELF parserを作る上で必要になるのが,parse対象となるfileの用意です.
とはいえ,ここでは32bit binaryの用意の仕方だけを紹介しておきます.
というのも,本環境では64bit binaryのelf parserを作成するという特性上,
"自作elf parserで自分自身をparseする" ということができるためです.

作り方

適当なC programを用意して,gccで32bit ELFを生成するだけです.

#include <stdio.h>
#include <stdlib.h>

int main() {
    puts("Hello, world!");
    
    return EXIT_SUCCESS;
}
$ gcc -m32 main.c -o main32

もし fatal error: bits/libc-header-start.h のようなerror messageが出た場合は, gcc-multilib packageをinstallしてください.