デコンパイラー【decompiler】
読み方:でこんぱいらー
逆コンパイラ
別名:デコンパイラ
【英】decompiler
逆コンパイラとは、0と1で表現される機械語によって書かれたプログラム記述(オブジェクトコード)を、高級言語などへ変換を行う際に用いるプログラムのことである。
機械語を、人間から見て理解しやすいアセンブリ言語に変換する逆アセンブルとは区別されるもので、アセンブリ言語以外の高級な言語へ変換する際に、逆コンパイラが用いられる。なお、逆コンパイラがプログラムそのものを指すのに対して、それを実行することは逆コンパイルと呼ばれる。
元のソースコードに含まれている変数名などが、コンパイルを行った際になくなっているため、逆コンパイラを用いて、元のソースコードをコンパイル前の状態に復元することは難しいが、特にJavaによって記述されたプログラムは、逆コンパイルが比較的容易であると言われている。
逆コンパイラ
(Decompiler から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/04/02 16:39 UTC 版)
|
|
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 (2021年12月)
|
逆コンパイラ(ぎゃくコンパイラ、英: Decompiler)とは、機械語で記述されたオブジェクトコードを解析し、人間にわかりやすいソースコードを作成するプログラムである。
概要
人間がプログラムを作成するときには C や Java といった高水準言語を用い、それをコンパイラによって機械語へ翻訳することで、コンピュータが理解できるオブジェクトコードが作成される(コンパイル)。逆コンパイルとは、オブジェクトコードを解析し、対応するソースコードを作成することである。コンパイルと逆の操作を行うため逆コンパイラと呼ばれる。
「逆-」という名称が用いられているが、一部の情報はコンパイルの過程で不可逆的に失われるため, バイナリを生成したオリジナルのソースコードを復元することは困難であり、コメントや変数名、一部の制御フロー等は復元されない。一方で、Java を始めとした仮想マシンのバイトコードを高級言語に復元することは、ネイティブコードのそれに対して比較的容易であり、Java Decompiler[1]等のソフトウェアを用いることで高度な復元が可能な場合がある. 。
なお平成30年に著作権法改正により柔軟な権利制限規定がされ、ソフトウェアの開発元が定める利用規約等によって、公開されているプログラムに対して逆コンパイル等のリバースエンジニアリングを行うことを禁じている場合でも著作権侵害とならないと解される[2]、規約との関係については注意する必要がある。
EU では Directive on the legal protection of computer programs[3]の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 等の逆コンパイラ
脚注
関連項目
- Decompilerのページへのリンク