機械語で書かれたオブジェクトコードを元に、アセンブリ言語のソースコードに変換を行うことです。
通常の「アセンブル」は、アセンブリ言語のソースコードを、アセンブラと呼ばれるソフトウェアを使って、コンピュータが理解・実行できる機械語で書かれたオブジェクトコードへ変換することをいいます。逆アセンブルはその「逆」であり、機械語で書かれたオブジェクトコードを、アセンブリ言語のソースコードに変換することをいいます。逆アセンブルを行うソフトウェアを、逆アセンブラと呼びます。
機械語の命令と、アセンブリ言語の命令(ニーモニック)は1対1の対応関係があるため、高級言語のソースコードへの逆変換を試みる逆コンパイルに比べて実現は容易です。オブジェクトコードが高級言語のソースコードをコンパイルして作られたものであっても、逆アセンブルによって、アセンブリ言語のソースコードを得ることができます。
逆アセンブルは、実行可能ファイルはあるが、ソースコードが入手できないようなときに、プログラムの動作を解析するために行うことがあります(リバースエンジニアリング)。
また、高級言語で作成したプログラムの挙動が意図どおりでなく、ソースコードの内容と明らかに一致していないと思える動作をしている場合に、そのデバッグのために行うこともあります。これは、コンパイラ自体もソフトウェアである以上、バグが潜んでいることもあり、コンパイル結果がおかしい可能性があるためです。このようなケースでは、高級言語で記述したソースコードをいくら検証しても無意味で、オブジェクトコードを調べる必要がありますが、機械語のまま読み解くことは困難なので、アセンブリ言語のコードに変換したものを調査します。こうしたデバッグの手法として有用なので、デバッガが逆アセンブルの機能を備えていることが多いです。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |