オブジェクトコードを解析して、その元になったソースコードへの逆変換を行うことです。
通常の「コンパイル」は、人間が読み書きしやすい高級言語で記述されたソースコードを、コンパイラと呼ばれるソフトウェアを使って、コンピュータが理解・実行できる機械語で書かれたオブジェクトコードへ変換することをいいます。逆コンパイルはその「逆」であり、オブジェクトコードをソースコードに変換することをいいます。逆コンパイルを行うソフトウェアを、逆コンパイラと呼びます。
ただし多くの場合、コンパイルの際に、変数や関数などの名前(シンボル)やコメントは除去されていますし、最適化によってコードは大きく変化していることもあるため、元のソースコードを完全に復元することは不可能です。
実行可能ファイルはあるが、ソースコードが入手できないようなときに、プログラムの動作を解析するために行われることがある行為です(リバースエンジニアリング)。ただし、法的な取り扱いに関しては注意が必要です。
少なくとも逆コンパイルという行為自体が違法ということはありませんが、それによって得られた内容を勝手に公表したり、盗用したりすれば違法になり得ます。特にそれが特許に関するものであれば明らかに違法です。また、EULA(エンドユーザー使用許諾契約)によってリバースエンジニアリング行為を禁じている場合もあり、それを無視したのなら契約違反ですから、やはり違法性があることになります。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |