2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

リバースエンジニアリング(逆コンパイル)を知っていますか?

Last updated at Posted at 2025-03-10

.NETアプリのコードは簡単に解析されてしまう?

近年、アプリケーションの難読化(コードをわかりにくく変換すること)の必要性は徐々に認知されてきています。しかし実行可能ファイル(exe)から元のソースコードが簡単に逆コンパイルできてしまう事実を、まだ多くの開発者が認識していません1

とくに.NETアプリの場合、コンパイル後のプログラムにはMSIL(中間言語)が含まれており、このMSILにはクラス名やメソッド名など豊富なメタデータ(付加情報)が保持されています。そのため、フリーの解析ツールを使えば、誰でも容易に実行ファイルからソースコードを再現できてしまうのです。

dnSpyを使った逆コンパイルのデモ

実際に、フリーの逆コンパイルツール「dnSpy」を用いて.NETアプリを解析してみましょう。.NET向けのサンプルアプリケーションをビルドし、dnSpyでexeファイルをドラッグ&ドロップすると、プログラム内部のクラスやメソッドがツリー状に表示され、コードを閲覧できてしまいます。

以下の図は、サンプルアプリ内のHelloWorldFormクラスを展開し、メソッドのコードを表示させたものです。

(図1:dnSpyで.NETアプリを逆コンパイルし、コードを表示した例)
b3adf9b6-aa3c-4ef2-9622-5ed2164c8cd2.png

図中では、ConverseメソッドやConverseButton_Clickイベントハンドラが確認できます。コメントや余分な空行こそ削除されていますが、変数名やメソッド名、文字列リテラルオリジナルのソースコードと同じまま再現されています。そのため、仮に解析対象アプリの開発者でなくとも、復元されたソースコードから多くの手がかりを得ることができ、プログラムの動作を容易に推測・解析できてしまいます

逆コンパイル対策は必須

以上のように、.NETアプリの実行ファイルはそのままでは丸裸同然です。無料で入手可能なツールを使えば、誰でも手元のexeからソースコードを複製して中身を調べたり改変したりできてしまいます。

逆コンパイルによる知的財産の流出脆弱性の露見を防ぐためには、アプリ側で適切な対策を施す必要があります。特に、難読化ツールの導入は.NETアプリ開発者にとって必須の防御策と言えるでしょう。1

  1. .NETアプリの逆コンパイル対策、その具体的な方法とは?(難読化の実例付) 2

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?