逆コンパイラ

逆コンパイラ（ぎゃくコンパイラ、）とは、機械語で記述されたオブジェクトコードを解析し、人間にわかりやすいソースコードを作成するプログラムである。

 概要 
人間がプログラムを作成するときには C や Java といった高水準言語を用い、それをコンパイラによって機械語へ翻訳することで、コンピュータが理解できるオブジェクトコードが作成される（コンパイル）。逆コンパイルとはその名の通り、オブジェクトコードを解析し、ソースコードを作成することであり、それを行うプログラムを逆コンパイラという。

「逆－」という名称が用いられているが、むろん完全にもとのソースコードが再現されるわけではなく、コメントや変数名はコンパイル時に完全に失われているため、元に戻すことは不可能である。しかし、Java の実行ファイルについてはかなり高い再現度でソースコードを作成することができる。

なお平成30年に著作権法改正により柔軟な権利制限規定がされ、ソフトウェアの開発元が定める利用規約等によって、公開されているプログラムに対して逆コンパイル等のリバースエンジニアリングを行うことを禁じている場合でも著作権侵害とならないと解されるデジタル化・ネットワーク化の進展に対応した柔軟な権利制限規定に関する基本的な考え方、規約との関係については注意する必要がある。

EU では Directive on the legal protection of computer programsCouncil Directive 91/250/EEC of 14 May 1991 on the legal protection of computer programsの6条において、いくつかの条件のもとで逆コンパイルに権利者の許可が不要であると規定している。また9条の規定で、6条に反する契約条項は無効 (null and void) とされている。

 主要な逆コンパイラ 
.NET Decompiler: Decompile Any .NET Code  .NET Reflector
REC Studio 4 - Reverse Engineering Compiler
Boomerang Decompiler - オープンソースの逆コンパイラ
JAD Java Decompiler Download Mirror - Java 逆コンパイラ
JEB decompiler - Android、Intel（x86/x86-64）、WebAssembly、Ethereum 等の逆コンパイラ

 脚注 

 関連項目 
クリーンルーム設計
コンパイラ
アセンブラ
逆アセンブラ
バイナリ・リコンパイラ
リバースエンジニアリング
コンピュータセキュリティ

Category:コンパイラ
Category:プログラミング
Category:構文解析 (プログラミング)
Category:リバースエンジニアリング