バイナリ解析に関するツラツラ

  • 「実行ファイルの解析ってどーやるのっ!」
  • 「解析やってみたいよー」
  • 「どこの学科に行けば勉強できるの?!」

などのような質問をよく受けるので、ひとつの個人的な道筋を書いてみます。
とりあえず今回は実行ファイル解析編。アセンブリ楽しいよアセンブリ
(最後の方には実行ファイルに限らず、いろいろな解析系のリンクをまとめています。)

最初の入門

なんだかんだで一番分かりやすくて「解析してる!」っていう実感が沸きやすそうなのは、crackmeかなあと思うのです。

この本は実にいやらしいすばらしい・・・入門の入門と言えようぞ・・・(((
実際問題とても分かりやすく、「16進数って何?」というレベルの人でも頑張れば問題ない構成だと思います。途中までは。
とりあえず半分ぐらいまで熟読してみると、第一歩を踏み出す準備ができるのではないでしょうか。
むしろ、2歩3歩踏み出してこけるかもしれません。
でも、そのぐらいでいいと思います。そういう世界です。


追記(2010/10/14 03:00:00)
ただし、この本に出てくるお兄さんは途中で1年ほど旅に出ます。
そこから後の内容は、リアルで1年ぐらい頑張って勉強した後じゃないと読めないプロテクトがかかってます。
正確には、読んでも多分理解できないレベルの内容です。。。
でも、分かるようなレベルになれば、書いてあることは結構面白いことばかりなので、
売ったりせずに保管しておくとよいと思います :D

意外と年齢は関係なさそう?

この本を親に薦めてみたら、はまりかけました。
もう40後半ぐらいのはずなんだけど・・・それぐらい足を突っ込むと面白い世界ってことなのかもしれません。

他の書籍

残念ながら他の類似した書籍を読んだことがないので、紹介できませんが、↓とか有名ですね。

次の一歩

本を読み終わって、いざ!どうしてくれようぞ、この知識!
市販ソフト*1を片っ端からクラックして遊ぶのもいいんですが、*2
世の中には素敵なものがありまして。その名も"crackme"*3
簡単なものからちょっと難しいもの、果てはコンテストなどで用いられるような商用ソフト顔負けのものまで、さまざまです。

これを全部解けちゃうころには、あなたも立派なクラッカー!リバースエンジニア!

解析って、いろいろな知識が必要

これで実行ファイルはある程度解析できるようになったかもしれません。
しかし、今の状態で「マルウェア*4解析」をやってみても、きっと手が出ないと思います。
それになにより危険です。
きっと、次のような知識が必要になってきます。

  • プログラムを作る側の心に関する知識
  • プログラムの構造に関する知識
  • 暗号に関する知識
  • ネットワーク通信に関する知識
  • 各システム(OSなど)に関する知識
  • 実行ファイルの構造に関する知識
  • プログラムが実行される仕組みに関する知識
  • その他諸々

挙げてたらきりがないんですが、要するに広いアンテナが重要となってきます。
マルウェア解析であればさらに、セキュリティに関する知識*5も必要になると思います。


追記(2010/10/12 22:22:22)

これ、ゼッタイ!気力と根性とコーヒー!((

若い人は

セキュリティ&プログラミングキャンプ2010に参加してみるといい!

物足りない人は

難しい問題にチャレンジしてみたい人は、CTF系もお勧め。

いろいろな情報を得るには

Twitterでそっち関係の人をウォッチするのもアリ。

まとめサイトも便利。

セキュリティ系勉強会に参加するとモチベーションが爆発する。

*1:使いたい市販ソフトにはちゃんと代金を払いましょう。

*2:間違ってもクラックしたものを誰かにあげたりアップロードしたりしてはいけません。違法行為です。

*3:実行ファイルと課題が出され、課題をクリアするために実行ファイルを解析していくというもの。

*4:マルウェア - Wikipedia

*5:どういうことをしたら危ないのか、どうなるのか、どういう風な環境で解析すべきなのか、とか。