ConfuserExで.NETアプリケーションを難読化する

.NETアプリケーションは.NET ReflectorILSpyのような逆コンパイラを
使用すると、簡単にソースコードを見ることができてしまいます。
リバースエンジニアリングを防ぐためにソースコードを読みにくくすることを
難読化と言い、.NETの開発元のMicrosoftもここここ
難読化が必要であると言っています。

しかし、Visual Studioに付属の難読化ツール
Dotfuscator Community Edition (CE)は無料で使えるものの
文字列の暗号化や制御フローの難読化に対応しておらず
機能的に十分とは言えません。
詳細はDotfuscatorのエディション比較ページへ。

そこでこの記事では、フリーでオープンソースの難読化ツール
ConfuserExを使ってプログラムを難読化する手順を紹介します。

テストプログラム

難読化テスト用に簡単なプログラムを作ってみました。
入力した10進数をインクリメントしながら16進数に変換するプログラムです。

逆コンパイルしてみる

テストプログラムをILSpyで逆コンパイルしてみます。
confuserex_ilspy
関数名から変数名、日本語の文字列までしっかり見えていることが分かります。
丸見えどころか、冗長なコードが整理されて見やすくなってすらいます。

ConfuserExで難読化する

ダウンロード

ConfuserExのバイナリをGitHubからダウンロードします。
confuserex_download

難読化する

ダウンロードしたファイルを解凍してConfuserExを起動します。
confuserex_icon

難読化するプログラムを設定します。
Drag input modules here
の部分にプログラムをドラッグ&ドロップします。
confuserex_start

難読化の設定をします。
Settingsタブを開き、<Global settings>を選択して+ボタンを押します。
confuserex_setting

右側のペンのボタンを押すと
難読化ルールの編集画面が開きます。
confuserex_setting2

PresetをNormalに設定し、Doneボタンを押します。
confuserex_setting3
これで難読化の設定が完了しました。

難読化を実行します。
Protect!タブを開き、Protect!ボタンを押します。
confuserex_protect
Finishedが表示されたら難読化は完了です。
プログラムのあるフォルダにConfusedフォルダが作成され
難読化されたプログラムが出力されています。

難読化できているか確認する

難読化したプログラムをILSpyで逆コンパイルしてみます。
confuserex_ilspy2
しっかり難読化されていることが分かります。
クラス名、関数名、変数名は跡形もなく、文字列も暗号化されています。
for文もどこかへ消し飛んでしまいました。

ファイルサイズは増えています。
confuserex_size

念のため動かしてみましたが、問題なく動きました。
confuserex_test

 

以上、ConfuserExで.NETアプリケーションを難読化する方法を紹介しました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA