
素早いバイナリ解析のためのインタラクティブREPLを備えたミニマルなELFインスペクタ
readelf や objdump の代替ではありません。一般的なリバースエンジニアリングの質問に答えるための、すばやく使える専門ツールです:
また、C言語によるわかりやすいELFパースの例としても機能します。ストリップ済みバイナリやセグメントのみのバイナリも適切に扱います。
(elfpeek:ls).dynsym と .symtab の両方<elf.h> のみmake
任意:REPLでコマンド履歴を有効にするには libreadline-dev をインストールしてください。
./elfpeek
./elfpeek /bin/ls # ヘッダ、セクション、シンボルを表示
./elfpeek /bin/ls 0x6760 # アドレスを解決
セクション:
.text, .plt).data, .bss).rodata)Hexdump:
00)20-7E)01-1F)80-FF)tests/ にはサンプルELFファイルが含まれています:
relocs コマンド - 再配置を表示got/plt 解析MIT
| コマンド | エイリアス | 説明 |
|---|
open <path> | o | ELFファイルを開く |
close | 現在のファイルを閉じる | |
info | i | ELFヘッダを表示 |
sections | s | セクションヘッダを一覧表示 |
phdr | p | プログラムヘッダを一覧表示 |
entry | e | エントリポイントを表示 |
symbols [dyn|sym] | sym | シンボルテーブルをダンプ |
resolve <addr> | r | 仮想アドレスを解決 |
dump <.sec|@off> [n] | d | 16進ダンプ(セクションまたはオフセット) |
help | ? | ヘルプを表示 |
quit | q | 終了 |
| ファイル | 説明 |
|---|
elf32_le.bin | 32ビット リトルエンディアン (i386) |
elf32_be.bin | 32ビット ビッグエンディアン (PowerPC) |
elf64_be.bin | 64ビット ビッグエンディアン (PowerPC64) |
elf64_le_pie.bin | PIE実行ファイル |
elf64_le_static.bin | 静的リンク |
elf64_le_dynsym_only.bin | ストリップ済み、dynsymのみ |
elf64_le_so.bin | 共有オブジェクト |
elf64_le_segments_only.bin | セクションヘッダなし |