有給医のライフハック記録

医師の語る人生最適化戦略

バイナリ解析の初学。だれでも分かる参考図書を紹介。

 

 

バイナリ解析実践の動機

・プログラムのセキュリティ機能に興味があったから。

・昔からコンピュータへの侵入の仕組みが気になっていたから。

・CTFに出題されるところだから。

・暇だったから。

 

 

バイナリ解析とは?

コンピュータのプログラム実行ファイルから、もとのソースコードを解析する作業を総括して呼びます。「逆行する工学」という意味を込めて、リバースエンジニアリングとも表現します。ただしい表現とは言えないかもですが、「逆プログラミング」といったところでしょうか。

 

商用のプログラムは、当然ながら利益を追求するためにプログラマーが良質なソフトを作り上げます。本来であれば、商用ソフトのソースコードは公開されません。みんなが真似すると利益が落ちるからです。

 

ですが商用で販売された実行ファイルそれ自体も、暗号化されていようが当然ながらソースコードが存在するわけです。ソースコードがなければソフトウェアにはなり得ません。一見むずかしそうですが、不可能ではありません。解析する技術が存在しています。

 

悪い人は技術を悪用してしまいます。海賊版のソフト的なものを売ってしまうでしょう。ですが善意であれば、ソフトの弱い部分を見つけて、修正する助けになるのです。

 

 

バッファオーバーフロー

プログラムの脆弱性のなかで、とりわけ有名なのが「バッファオーバーフロー」。

 

CやC++でのプログラミング経験がおありでしたら、「バッファオーバーフロー」という概念を聞いたことがあると思います。僕も昔聞いたときには「?」でした。C自体が難解であるのに、メモリやらポインタやらで混迷していました。

 

コンピュータが高性能といっても、データを一時的に格納するメモリには限界があります。本来規定されているデータ容量を上回るデータ入力があると、メモリの一部で「データ漏れ」を起こします。この「データ漏れ」から、本来規定されていないメモリのアドレスにあるコードを実行されてしまいます。実行されるコードにより、下手をしたらターミナルを乗っ取られて「侵入」を許すことになる。

 

すごく簡単にいえば、このような仕組みです。よく知られているので、バッファオーバーフローが起きないような仕組みが出来上がっています。

 

今後

・コンピュータへの侵入メカニズムについて、バイナリ解析で得た知識をもとに掘り下げたい。

・CTFの問題を解きながら、知識をアウトプットしたい。

 

 

参考文献

 

語郎