バイナリ解析の学習を再開

 クラスメートがバイナリ解析の勉強を始めたので、便乗して僕もバイナリ解析の勉強を始めることにした。この分野に自分は何度も挫折している。そろそろ克服したい。一応説明を書いておくと、バイナリ解析とはマシン語によって構成されるバイナリファイルを解析して、その内容を動作を理解したり、動作の変更を試みたりするための解析技術のことである。
 挫折の理由は色々あるが、大きくは2つで、1つはこの分野が少なくとも僕にとっては難解であるということ、2つには、周りに学習内容とその感想を共有できる相手がいないからである。
 まず、基本的にバイナリ解析は難しい、ということは多くのバイナリ解析関連書籍で語られるところではある。色々と困難さはあるのであるが、特に学習段階においての困難さは覚えることが多すぎるということだ。バイナリ解析をするためには、まずプログラムがどのように動作するか(まずは、どうやったらプログラムはコンピュータ上で動くようになるのか)を知っている必要があってこれにはOSに関する様々な知識が必要である。そして当然解析対象はマシン語で記述されているので、解析対象の命令セットのおおまかな命令くらいは知っておく必要がある。それから、解析に使うツール類の使い方も大切だ。ユーティリティ各種にデバッガ、静的解析ツールは解析を行う上で重要となる。さらには、プログラミングの知識も必要だ。マシン語のコードは大抵は何かしらの高級言語で書かれたものをコンパイルしたものなのだから、元のコードはCなりC++なりのプログラムだったわけで、最終的には推測してこれに近いものを導きたいのである。それなのに導出したプログラムが理解できないとなれば、それは本末転倒である。
 そして、セキュリティ分野の中ではメジャーな分野ではあると言えど、コンピュータ分野全体の分野で考えるとやっている人はそこまで多くない分野なのだと思う。マシン語を解析する深遠な行為だから認知自体は広くされているとは思うが、実際に手をつけている人は少ないと思う。だから、クラスメートが学習を始めたら(特に熱意のあるクラスメートが始めた時は)大きなチャンスである。便乗して頑張って、苦難を乗り越えるコミュニティを作りましょう。
 なお実用的な面では、バイナリ解析技術自体はセキュリティ分野においては非常に重要視されており、マルウェア解析などを行うための基礎的技術として位置付けられている。ソフトウェアの脆弱性を探したり、治したりという上でも重要な基礎技術である。
 ということで、バイナリ解析の勉強を再開したという話。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。