kensyou_jikenboのブログ

yahoo!ブログの同名ブログを移行しました

逆コンパイル

7月10日記者会見
佐藤「逆コンパイルで元のコードを一応復元できるそうであるが、完璧なものにはならない。
    ソースコードというものは犯人しか知り得ないものである」

それで逆コンパイルを実際に行なってみた。

1.使用した逆コンパイル用ソフト・・・「ILSpy」 フリーソフトで使える。

2.逆コンパイルテスト用Projectファイル
 button1を押すと、Textboxに「Hello, World!」と表示する簡単なサンプルソフト(Project)「HelloWorld」を用意した。コードと若干のコメントを入れてある。
 以下に画面(Form1)とC#プログラムを示す。
 なお、プログラムの方は「Form1.cs」という名称になっている。プログラマが自分で書くのは主にこの部分のコードなので、通常はこれをソースコードと呼ぶ事もできるが、VisualStudioはもっと多くのソースコードを自動的に生成する。(昨日記事の図参照)
 そのため、今回の事件でソースコードと呼ばれているものが、どの範囲を指すのか(Form1.csのようなものか?Project中の自動生成コードまで指すのか?)を定義する必要があると思われる。今はそれが不明確。
イメージ 3
イメージ 4

3.逆コンパイル結果
 HelloWorld.exeをILSpyで逆コンパイルした結果を以下に示す。
 ①コメントがなくなる、②thisが付く、など動作には影響しないが、元のコードとは変わっている部分が出てくる。iesys.exeはこのサンプルソフトより規模が大きいので、変化する箇所も数多くなる。
 よって、犯人が首輪のSDメモリや雲取山USBメモリに入れてあったというソースコードは、犯人が逆コンパイルしたものを入れたのでなければ、コンパイルしたものかどうかは容易に判別できると思われる。
 その意味で、佐藤弁護士の上記発言は正しい。
イメージ 1

4.Assembly情報
 「HelloWorld.exe」に含まれている情報を以下に示す。
 当方のPCでは情報がほとんど設定されていないが、iesys.exeの場合は例えばCopyrightの所に「Hewlett-Packard Company 2012」という表示があったりするのだと思われる。
イメージ 2

5.参考
 逆コンパイルの詳細は以下のブログが詳しい。
 ”ILSpy(3)逆コンパイルの結果”

以上