Binary Hacks ─ ハッカー秘伝のテクニック100選


文献案内

Binary Hack の参考になる文献を紹介します。 Hack #100 の「文献案内」の簡略版です。

書籍

Write Great Code

「グレートコード」を書く上で必要となるコンピュータの基礎的な 知識を幅広く扱った内容となっています。「ハードウェアを知り、 ソフトウェアを書く」という副題の通り、本書は CPU、キャッシュ、 メモリ、ストレージ、周辺機器といったハードウェアの話題に多く の紙面が割かれています。本書 Binary Hacks を読みこなす上で必 要になる基礎知識が多く含まれています。

詳解UNIXプログラミング

Unix のシステムコール・ライブラリ関数ひとつひとつについて詳 細に解説した貴重な本です。普段何気なく使っているシステムコー ルも、よくよくこの本の説明を読んでみると、さまざまな注意事項 や意外な使い方などの発見があるはずです。歴史的背景についての 記述も豊富であり、標準規格の解釈に厳密なのも特徴です。 Unix でシステムプログラミングをする上で必携の本です。

コンピュータの構成と設計

著者のパターソンとヘネシーから「パタヘネ」という呼び名で有名 な名著。コンピュータの基本概念から、命令セット、算術演算、性 能評価、プロセッサやコンピュータシステムのアーキテクチャを解 説しており、ハードウェアとソフトウェアとの相互関係を理解する ことができます。ソフトウェア側からだけでなく、ハードウェア側 からみてどのように実行されるかを理解するために必要な知識を得 ることができます。

Linkers & Loaders

リンカとローダについての数少ない専門書です。リンカとローダの 仕組みだけでなく、システムプログラミングに役立つ知識も得られ る本です。前半では、リンカに関係する OS の仕組みについて、た とえば仮想メモリとファイルのマッピングの関係や、マップ時の書 き込み時コピーの仕組み、といった内容が歴史的経緯とともに説明 されています。

デバッガの理論と実装

その名の通りデバッガの理論と実装についての解説書です。特定の デバッガに限定した内容ではなく、各種 OS のデバッガや、 Java のデバッガなど、さまざまなデバッガに関する話題を幅広く扱って います。デバッガの実装は実行環境の OS やプロセッサに密接に関 わっていますが、ブレークポイントやステッピングなどの基本的な コンセプトはどのデバッガにも共通しています。

ハッカーのたのしみ

バイナリといえば二進、二進といえばビットです。ビット単位の操 作を含め、細かく繊細なさまざまな操作について述べている良書で す。

セキュリティウォリア

情報セキュリティ技術一般を扱っている書籍です。3章の「Linuxリ バースエンジニアリング」には、本書 Binary Hacks を読む上で参 考になる記述があります。たとえば、nm, gdb, lsof, ltrace, objdump 等の基本的なツールの使い方の解説、objdumpによる逆アセ ンブル結果の読み方の解説、ptrace(2)を利用した簡単なツールの開 発例、GNU BFD の活用例などが書かれています。

JIS X 3010:2003 プログラム言語C

最新のC言語規格である ISO/IEC 9899:1999 (通称:C99) を、日本語 に翻訳したものです。CコンパイラをHackする際には必携の書といえ ます。この規格書には、他ではなかなか知ることのできない微妙な 部分も含め、C言語の全てが記載されています。

財団法人 日本規格協会のWebStore から購入可能です。また、 日本工業標準調査会の「JIS検索」で X3010 を検索すると、PDFの閲覧ができます (印刷はできません)。

インターネット

How To Write Shared Libraries

Linux の共有ライブラリ (動的共有オブジェクト) に関する決定版 的なドキュメントです。Linux に ELF バイナリが導入された歴史的 経緯に始まり、共有ライブラリのメリット・デメリット、動的リン クの仕組み、性能の改善方法など、さまざまな話題が凝縮されてい ます。共有ライブラリを用いた Hack を行う際に必要な情報が網羅 されているといっていいでしょう。

The Single UNIX Specification, Version 3

UNIXの規格です。The Single UNIX Specificationは、UNIXの深い学 習に有用なドキュメントです。特にXSHのAPI一覧は、眺めていると 思わぬ発見があるものです。 mozdev.org では、この規格を Firefox の検索バーから検索するためのプラグインが配布されています。 mozdev.org のホームページから Single UNIX Specification で検索してください。

arbitrary unix stuff

各種 Unix の #! の実装や各種シェルの内蔵 echo コマンドの動作 など、 Unix に関するトリビア的な情報が満載のサイトです。Unix のさまざまな機能のディテールに興味のある人向けのサイトです。

マイクロプロセッサアーキテクチャマニュアル

IA-32(x86)、EM64T、IA-64(IPF)

AMD x86、AMD64

Alpha

ARM

MIPS

PA-RISC

PowerPC

SH

SPARC

S/370

"Principles of Operation" (通称 PoO) は、IBM System/360 (S/360) のアーキテクチャマニュアルです。製品のマニュアルだったのですが、アーキテクチャの教科書としても広く使われてきました。 S/360 が S/370、ESA/390、ZSeries と進化するのに対応し PoO も改訂されています。


Satoru Takabayashi