Chapter 09無料公開

余談

Drumato
Drumato
2021.08.29に更新
このチャプターの目次

余談

ここまで読んでくださり,ありがとうございました.
ここではこの本を書いた経緯や,私がELFについて思っていることをつらつらと話します.

この本を書いた経緯

ELFという分野(?)は "知っている人は知っている" の典型的なpatternで,
私が普段仲良くさせて頂いているclusterの方々とは盛り上がれるが,
学内サークルや勉強会でELF LTとかするとポカーンとなってしまい,
どうしたらbinary formatに興味をもってもらえるか ということを考えていました.

それと同時に,
私が現在compiler/assembler/linker/loaderなどの勉強からnetwork/infra/cloudなどの分野にswitchしているのもあって,
"私がELFについて勉強してきたoutputがなんか残せたらいいな" みたいな感覚がモヤモヤっとありました.
それを突っ込んで煮込んだ結果,
"nomというpopular parser libraryを使ってELF programmingの楽しさを伝える" という本が出来上がった次第です.

本当はsh_linkやsh_infoの使われ方とか,relocationの詳しめな話とかも入れようかと思いましたが,
まずはELFがどんなものか知ってもらって,
後は好きなようにprogrammingを楽しんでもらう,というのが良いだろうという結論に至りました.
その思いがちょっとでも伝わっていたら嬉しいなと思っています.

私とELF

私がELFの勉強を始めたのは2019年の頭にさかのぼります.
当時 SecHack365 に応募することを決めていた私は,
どんな題材で応募しようかウンウン唸っていました.
そして,結果以下のような題材で応募しました.

  • compilerって全然よくわからないから作ってみよう
  • どうせならexecutableの生成までやってみたい
    • 調べたらlinkerまで作ってる人がそう多くなかった(記事が少ないという意味)
  • 自作Hello, world夢があるよね

結局新規性のかけらもない題材でしたが勉強になったのでここらへんは省略します.
SecHack365の活動については こちらのレポ にまとめてあります.

そしてなんとなく調べていくとELFに詳しくなる必要があったために,
なんとなく車輪の再発明としてreadelfっぽい何かを作り始めた,というのが最初です.
その時の苦労の様子は ここらへんの記事 を読むとわかります.

未だにreadelf 実装 とかで検索すると上記記事が出てきちゃいます.恥ずかしい.


そんな私ですがSecHack365での一年間を通じて,

  • readelf
  • checksec
  • assembler
  • linker

等が作れました.
elfの勉強は xxdreadelfobjdump に助けられました.
ありがとう.
結局信じられるのはhexdumpだけ,みたいなのが凄い世界観だなー,と当時は思っていましたね.

networkやinfra layerになるかもしれないですが,また何かZennで本かけたらいいなー.楽しかった.