「逆コンパイル」と「逆コンパイラ」の違い
予備知識
| 用語 | 意味 |
|---|---|
| ソースコード | 人間語で書いたプログラムの元ネタ |
| 機械語 | コンピュータさんが分かる言葉 |
| コンパイル | ソースコードをコンピュータさんが分かる言葉に翻訳する作業 |
| コンパイラ | ソースコードをコンピュータさんが分かる言葉に翻訳するのが仕事のプログラム |
プログラムを作って動かすまでの一般的な流れは
1.人間語でプログラムの元ネタを書く
2.元ネタを人間語から機械語に翻訳する
3.翻訳された指示に従って、コンピュータさんが お仕事する
です。

コンピュータさんは人間語が分かりません。

人間様はコンピュータさんの言葉が分かりません。

プログラムは人間様が作るものです。
そこで最初は人間様が分かる言葉でプログラムを作ります。
コンピュータさんに対する「あれをやれ」「これをやれ」な命令を人間語で書くのです。

次に人間語で書いたプログラムの元ネタをコンピュータさんが分かる言葉に翻訳します。
実際に お仕事をするのは、コンピュータさんですからね。
コンピュータさんが分かる言葉に変換する必要があるのです。

コンピュータさんが分かる言葉に翻訳したので、コンピュータさんは命令の内容を理解できます。
指示に従って、お仕事をしてくれるでしょう。

かなり簡略化した説明ですけどね。
これがプログラムを作るときの流れです。
この話における、ソースコードを機械語に翻訳する作業がコンパイルです。

ソースコードを機械語に翻訳してくれるプログラムがコンパイラです。

それぞれの用語の意味
| 用語 | 意味 |
|---|---|
| 逆コンパイル | 機械語を無理やり人間語に翻訳して、プログラムからソースコードを取り出す作業 |
| 逆コンパイラ | プログラムからソースコードを取り出すときに使うソフト |
似ているところ
どちらも、実際のプログラムからソースコードを(無理やり)取り出すときのあれやこれやです。
機械語を無理やり人間語に翻訳することでソースコードを取り出します。

違うところ
「行為」か「プログラム」かの違いです。
逆コンパイルは実際のプログラムからソースコードを(無理やり)取り出す「行為」です。
逆コンパイルすると(成功すれば)プログラムからソースコードを取り出せます。

逆コンパイラは逆コンパイルしてくれる「プログラム」です。
逆コンパイラは機械語を無理やり人間語に翻訳してくれます。
(成功すれば)プログラムからソースコードを取り出せます。

備考
「逆」は日本語ですね。
「compiler(コンパイラ)」は「compile(コンパイル)」+「er」です。
「compile(コンパイル)」の意味は「1つに集める」とか「編集する」とかです。
接尾辞「er」を付けると「~する人」とか「~するもの」的な意味になります。
「逆に編集する」のが逆コンパイルで「逆に編集するやつ」が逆コンパイラです。






