逆コンパイラ 【decompiler】 デコンパイラ
概要
逆コンパイラ(decompiler)とは、機械語などで書かれたオブジェクトコードを解析し、元になった高水準言語によるソースコードに逆変換するソフトウェアのこと。そのような工程を「逆コンパイル」あるいは「デコンパイル」(decompile)という。人間が読み書きしやすいプログラミング言語で書かれたコンピュータプログラムを「ソースコード」(source code)というが、これはそのままではコンピュータで実行できないため、機械語や中間言語などの「オブジェクトコード」(object code)に変換する必要がある。開発時に変換をいっぺんに行うソフトウェアを「コンパイラ」(compiler)という。
逆コンパイラはこれとは逆に、機械語や中間言語で書かれたオブジェクトコードを読み込んで、元になったソースコードへの復元を試みる。何らかの事情でソースコードが入手できないソフトウェアを別の環境へ移植したり、機能を模倣するためのリバースエンジニアリングを行う際などに用いられる。
通常、ソースコードに記述された変数名や関数名などのシンボルはコンパイル時に失われていることが多く、高水準言語の構文はアセンブリ言語と違って機械語や中間言語の命令語などと一対一に対応しないため、完全に元のソースコードが再現されるわけではない。
商用ソフトウェアなどの中には、知的財産権の保護などの理由から、販売・配布時の利用許諾契約で逆コンパイルを禁じている製品もある。Javaで開発されたプログラムはバイトコード(中間形式)から逆コンパイルしやすい構造であることが知られており、逆コンパイル対策ソフトも開発されている。
(2023.4.25更新)