「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

逆コンパイル

pointこの用語のポイント

pointコンパイルの逆だよ

point機械語を(無理やり)人間語に翻訳するよ

pointプログラムからソースコードを取り出すよ

スポンサーリンク

簡単に書くよ

逆コンパイル(読:ギャクコンパイル 英:decompile)とは

コンピュータさんが分かる言葉(機械語)を無理やり人間様が分かる言葉(人間語)に翻訳することによって、できあがっているプログラムから人間語で書いたプログラムの元ネタ(ソースコード)を取り出すこと
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

プログラムの作り方
ソースコード
コンパイル


について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

プログラムを作って動かすまでの一般的な流れは

1.人間語でプログラムの元ネタを書く
2.元ネタを人間語から機械語に翻訳する
3.翻訳された指示に従って、コンピュータさんが お仕事する


です。

逆コンパイル

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

逆コンパイル2

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

逆コンパイル3

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

逆コンパイル4

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

逆コンパイル5

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

逆コンパイル6

かなり簡略化した説明ですけどね。
これがプログラムを作るときの流れです。

この話で登場した「人間語で書いたプログラムの元ネタ」を「ソースコード」と言います。

逆コンパイル7

また、ソースコードをコンピュータさんが分かる言葉に翻訳する作業を「コンパイル」と言います。
コンパイルは人間語を機械語に翻訳する作業です。

逆コンパイル8

コンパイルされる前のソースコードは人間語で書かれています。
コンピュータさんが見てもサッパリ分かりません。

逆コンパイル9

コンパイルされたプログラムは機械語に翻訳されています。
人間様が見てもサッパリ分かりません。

逆コンパイル10

以上を踏まえて

機械語を無理やり人間語に翻訳して、プログラムからソースコードを取り出す作業

が「逆コンパイル」です。

逆コンパイル11

そのまんまなネーミングですね。
コンパイルの作業だから逆コンパイルです。

コンパイルでやったのは「翻訳」です。
コンパイルしても中に書いてある内容自体は変わっていないはずです。
ということは、コンパイルでやった作業を完全に逆の手順でやれば、機械語のプログラムを人間語のソースコードに戻せるはずです。

そんな理屈で無理やり機械語を人間語に翻訳するのが逆コンパイルです。

逆コンパイルするときは専用のソフトを使うのが一般的です。
このソフトは「逆コンパイラ」と呼ばれたりします。

逆コンパイル12

注意点として、ソフトを使えば完全に元に戻せるわけでは ありません。
プログラミング言語によって、逆コンパイルしやすかったり、しにくかったりします。
また、ソフトの性能やプログラムの作り方によっても変わってくるでしょう。

日本語を英語に翻訳したのを さらに日本語に翻訳すると、ニュアンスや言い回しが変わったりしますよね。
それと同じです。

逆コンパイル13

個人的には、お勉強や解析目的で逆コンパイルするのは有用だと思っています。
抽出したソースコードを流用する目的でやるのは現実的ではない気がします。

抽出できるのは「それっぽいけど正しいか分からない」ソースコードです。
実用に耐えるかという点で疑問を感じます。

目的は人それぞれでしょうけどね。
私は解析目的でやる作業だと理解しています。


image piyo2

一言でまとめるよ

まぁ「逆コンパイル」って単語が出てきたら「プログラムからソースコード(人間語で書いたプログラムの元ネタ)を取り出すんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像003
書籍画像004

おまけ

■訳してみるよ

「逆」は日本語ですね。
「compile(コンパイル)」の意味は「1つに集める」とか「編集する」とかです。
何となく くっつけると

逆に編集する

となります。



■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
7日間でハッキングをはじめる本 TryHackMeを使って身体で覚える攻撃手法と脆弱性
エンジニア育成現場の「失敗」集めてみた。 42の失敗事例で学ぶマネジメントのうまい進めかた