逆コンパイル 【decompile】 デコンパイル
概要
逆コンパイル(decompile)とは、実行可能形式のコンピュータプログラムを解析し、開発時に用いられたプログラミング言語による記述(ソースコード)に戻す変換処理のこと。そのような変換を行うソフトウェアを「逆コンパイラ」(decompiler/デコンパイラ)という。一般的なソフトウェア開発では、人間が理解しやすい高水準言語によりソースコードの記述を行い、これをコンパイラ(compiler)と呼ばれるソフトウェアによってコンピュータの解釈可能なオブジェクトコード(バイナリコード/ネイティブコード)に変換して実行する。
逆コンパイルはこのような通常のコンパイルとは逆に、オブジェクトコードを解析し、元になったソースコードへの逆変換を試みる。開発者からソースコードが入手できず実行形式のコードしかない状況でプログラムの挙動を詳細に解析したい場合などに行われる。
一般に、オブジェクトコード中にはソースコードに記述されていた変数名や関数名などのシンボル、コメントなど実行時に不要な情報は残っておらず、これらの内容を逆コンパイルによって復元することはできない。また、コンパイラの最適化処理によって、元のコードとは実質的な処理内容を維持したまま異なるコードに置き換えられる場合もあり、逆コンパイルすると置き換え後のコードが復元される。
(2018.6.18更新)