ELFバイナリに含まれるnullセクション/ヘッダの真実…?
- 概要
- 本題
- 自作アセンブラについて
- 正解は…
概要
gccの吐くELFバイナリを見てみると、セクションヘッダテーブルの先頭に NULLヘッダ を見つけます。
これってなんだろう? ってずっと疑問だったのですが、今日理由がわかったのでそれについて述べたいと思います。
続きを読む厳密には、 nullセクション も含まれています。
サイズが0のセクション と、それに対応する 全てのメンバが0のヘッダ が存在します。
また本記事で取り上げるnullセクション/ヘッダの意味は私がなんとなくそうじゃね?と思ったもので、
もっと歴史的な経緯、重要な意味が含まれているかも知れません。
その場合は教えて下さい。
Seccamp2019でCコンパイラ実装に取り組みました
こちらに移行しました.
オブジェクトファイルのシンボルテーブルを最低限理解する。
目次
- 目次
- 注意
- 概要
- 対象読者
- 本題
- ELFフォーマット復習
- シンボルテーブル
- シンボル名 name
- シンボルの情報を格納する info
- ST_BIND
- ST_TYPE
- シンボルの可視性 Other
- シンボルの実体 Value
- 総評
注意
readelf 実装
で検索すると未だに一番上に出てきてしまっているので注意.
これはelfについて全然詳しくない時期に書いたものです.
一応入門的内容についてまとめたものがあるので,
よろしければそちらを.
概要
お久しぶりです。
最近やりたい事が沢山あってブログをかけずにいましたが、
唐突にブログ書かなくなったのは書きたくなくなったからでも知見をひた隠しにしたくなったからでもなく、
— Drumato (@drumato) May 14, 2019
単純にもっとやりたい事が他に出来ているからです
に述べている通りです。
今日はELFバイナリに埋め込まれるシンボルテーブルについて軽く解説しようと思います。
自作コンパイラとかやってる人には ほぼ必須の知識ですし、
バイナリ解析( Exploitation勢含む)が好きな人には楽しいお話だと思います。
今回の記事を作成する上で、
こちらのサイトを参考にしました。
ご存知Oracle社のドキュメントなので安心出来ますね。
解説中に登場するソースコードは基本的にGolangで記述されています。
対応する構造体等は/usr/include/elf.h
に記載されているので参考にしてください。
対象読者
続きを読むreadelf -S を簡易実装してセクションヘッダを理解する
目次
- 目次
- 注意
- 概要
- 前提:セクションヘッダとは?
- 本題1:実装
- 本題2:セクション名のテーブルについて
- 総評
注意
readelf 実装
で検索すると未だに一番上に出てきてしまっているので注意.
これはelfについて全然詳しくない時期に書いたものです.
一応入門的内容についてまとめたものがあるので,
よろしければそちらを.
概要
こちらの記事の続きです。
一応今回でreadelfは最終回になると思います。
今回はセクションヘッダを解析するコードを書きました。
ソースコードはこちらに。
elf
パッケージを見てくださいね。
https://github.com/Drumato/goccgithub.com
続きを読むreadelf -lを簡易実装してELFフォーマットの理解を深める。
目次
- 目次
- 注意
- 概要
- 前提:プログラムヘッダテーブルとは?
- 本題
- コードリーディングで情報集め
- 実装
- 総評
注意
readelf 実装
で検索すると未だに一番上に出てきてしまっているので注意.
これはelfについて全然詳しくない時期に書いたものです.
一応入門的内容についてまとめたものがあるので,
よろしければそちらを.
概要
こちらの記事の続きです
ELFヘッダのあとは、
プログラムヘッダの解析 に移るのが自然な流れだと思います。
今回も ソースコードベース で見ていくことで、
バイナリに慣れていない人にも理解できる記事を目指します。
GitHubを参照しながら読み進めて頂ければと思います。
https://github.com/Drumato/gocc/tree/master/elfgithub.com
続きを読むバイナリ何もわからない人に送る"ソースコード視点"のELFヘッダ解説
目次
- 目次
- 注意
- 概要
- まずはおさらい
- 本題:readelf
- 総評
注意
readelf 実装
で検索すると未だに一番上に出てきてしまっているので注意.
これはelfについて全然詳しくない時期に書いたものです.
一応入門的内容についてまとめたものがあるので,
よろしければそちらを.
概要
ELFフォーマットを理解するための試み第二弾。
こちらの記事の続きと言ってもいいです。
上記の記事には間違いが多いので注意してください。
本記事バイナリ何もわからない人に送るELFヘッダ解説
が正確です。
自作readelfの完成度を高める為にも、
単純にELFを勉強する教材として優れているという事からも、
本家readelfのコードリーディングは適切だと考えました。
今回は-h
オプションに限定していきます。