Chapter 08無料公開

Future Works

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

Future Works

本書の主な内容は以上になります.
dynamic sectionをparseしたくなったり,objdumpのようなdisasmを作りたくなりましたよね?
ここまでくれば皆さんも バイナリアン の仲間入りです!
私はelf parseをやりすぎて諸ヘッダならhexdump直読みで見れるようになりました(要らない力)

さて,
ここから先何すればいいの?という疑問を持った方のために,
programmingの題材をいくつかご紹介します.

  • emulator自作
    • QEMU等はelfを入力すると自動的にentry pointを見つけてそこからemulationしてくれます
    • そのような機能を作ろうと思うと,やはりelf parserが必要になります
    • gccが出力するexecutableを加工せずそのまま自作emulatorに突っ込めたらかっこいいですよね
  • 他のbinary formatに手を出す
    • binary formatとかnetwork protocol defを読んでいると, "やっぱこうしなきゃだよね" みたいなのが見えてきます
      • ex. 可変長データを格納するためにはoffsetとlengthが必要
      • そういうのを"体感"した今,前より そういうsense ができていると思います
    • ch01で述べたようにELFはだいぶsimpleにできています
    • PE32+などの複雑なformatに手を出してみると面白いでしょう
  • 自作compilerにasmの機能を入れてみる
    • 自作compilerが最終的にx64やArmv8のassemblyを吐いている人が対象
    • elf generation というtaskになるのでまた違った面白さがあります
      • valid formatを維持したまま直感的に扱えるlibraryを作ったりしても良いですね
    • かなり大変ですが, きっと学びがあります
      • call instructionはelfでどう表現されている?(reloc info)
      • symbol table attributeは?(visibility/etc)
      • x64 instruction formatは大変