『Binary Hacks Rebooted―低レイヤの世界を探検するテクニック89選』に込めた思い

はじめに

2024年8月28日に『Binary Hacks Rebooted―低レイヤの世界を探検するテクニック89選』という本の販売が開始されました。 著者の一人として、この本の紹介をします。 お持ちでない方は、Amazon や、楽天、お近くの書店などで購入が可能です。 購入していただけると大変嬉しいです。 どうぞよろしくおねがいします。

どのような本か

『Binary Hacks Rebooted』は2006年に発売された『Binary Hacks』の再構築版です。 再構築版と聞くと『Binary Hacks』とどれくらい異なるのが気になると思いますが、ほぼすべてが異なります。 詳細な目次はこちら で確認できますが、『Binary Hacks』からそのまま引き継いだ Hack は一つもなく、全てが新しい Hack です。

『Binary Hacks Rebooted』は低レイヤプログラミングの技術を幅広く、かつ深く解説した書籍です。 「低レイヤプログラミング」という単語は広い意味を持ちますが、この書籍ではELF フォーマットの解析からファームウェアの作成、浮動小数点例外まで幅広い内容を扱っています。 そして、各トピックについて日本語はもちろん、英語でも類似する解説が少ないと思われる内容を紹介しています。 カーネル/VM探検隊 に参加したことがある方は、「読むカーネルVM探検隊」のような感覚で読んでいただけるかと思います。

この本に込めた思い

私達はこの本を2つのことを目標に書いていました。

1つ目は「低レイヤプログラミングを面白いと感じてもらう」ことです。 細かいことはわからなくても構いません。 「あーこんなことできるんだ、おもしろ」と思ってもらえれば大変嬉しいです。 あなたが好きなように「探検」してみてください。

低レイヤプログラミングは一見とっつきにくい分野ですが、一度どのように動いているのかを理解すると、様々な面白いことができるようになります。 例えば、自分だけのファームウェアを作ってChromebook を動かすこともできますし、DWARF を使って四則演算を行うこともできます。 いつかどこかで私と会った時に、Hack の内容で盛り上がれることを楽しみにしています。

2つ目は「低レイヤプログラミングで困っている方の助けになる」ことです。 低レイヤプログラミングを実際に行ってみると、不可解なバグに多数直面します。 そのうちの多くは把握していない仕様、挙動によるものが多く、このようなバグを解決するためには幅広い分野の知識が必要です。 ELF ハックの多くは私が過去に実際に知りたかった知識をまとめたものが多く、同様のバグで困っている方の助けになればと思っています。

Thread Local Storage (TLS) の解説はその一例です。 TLS は非常に多くのプログラムで人知らず使われている機能ですが、低レイヤプログラミングを実際に行っているとその仕組みを理解するように迫られることがあります。 ところが、TLS についての詳細な解説は日本語でも英語でもあまり見かけません。 「#10 TLSのしくみを理解する 」は誰よりも3年前の過去の自分に当てて書いた Hack です。 この内容を3年前に知っていたら何ヶ月もデバッグに時間を費やすことはなかったでしょう。

私と同様に意味不明な挙動に悩まされている方が、世の中にはきっとたくさんいるはずです。 segmentation fault (core dumped) を見飽きたときに、この本を開いてみてください。

どんなふうに読んでほしいか

この本は最初のページから順番に読んでいく必要はありません。 いくつかの続きものの Hack を除いて各 Hack は独立して読めるようになっています。  目次を見て面白そうなところを読んでみたり、サイコロを振って出た目の Hack を読んでみたりしてください。 どんな方でもパラパラとめくっているうちに意外な気づきがあるはずです。

サンプルコードを実際に動かして見てから文書をしっかり読んでみるのも良いかもしれません。 サンプルコードはhttps://github.com/oreilly-japan/binary-hacks-rebooted/にあります。

おわりに

この本を書くために膨大な時間を費やし、各種の仕様書、Linuxglibcソースコードを何度も読み返しました。 自信を持って面白い本だと言えます。 この本を読んで、一人でも「低レイヤプログラミングを面白い」と感じてもらえる方がいれば幸いです。

最後に、もし、あなたが2042年ごろにこの文書を読んでおり、『Binary Hacks』の再再構築版が出したいと思っているなら、ぜひ私に連絡してください。 喜んで協力したいです。

2024年8月28日

河田 旺