前回の続き。

今回はEazfuscator.NET による難読化の前後でプログラムがどう変化したのか、を検証します。

Explanation

前回は、AliceとBobが互いに挨拶する簡単なプログラムを難読化しました。
ソースコードは前回の記事を参照してください。

では、難読化前後での変化を検証してみます。

(1) 実行結果の検証

難読化前

難読化後

実行は無事にできています。

(2) 逆コンパイラによるソースコード解析

難読化前

難読化後

!?
左側のツリーを見てください。AliceだBobだのという名前が一切ありません。
全部空白とか記号です。というか、クラスが増えています。
また、右側はBog.Greetingメソッドの中身ですが、難読化前は this.TeachNowTime() という風に丸見えだったのが、this.() に変化しています。
Console.WriteLineメソッドの第1引数に渡した文字列も意味不明な記号に変化しています。

(3) プログラムのサイズ

難読化前

難読化後

かなりサイズが大きくなりました。プログラムが小さいうちは許容範囲ですが…

Conclusion

今回も駆け足でお伝えしましたが、どうだったでしょうか? ここまで簡単だと拍子抜けですね。いや本当に。
こんなに簡単ですと、「とりあえず難読化しとく?」みたいな風潮になりませんかねぇ?ならないか。

恐ろしいのは、これが無料であることです。商用利用も可、とヘルプに書いてあります(執筆時時点で)。
Babel.NETも無料で高機能だったらしいのですが、残念ながら有料化してしまいました。
まぁ、素晴らしいソフトなので、有償化してもお金を出します。
事実、私は .NET Reflector はVSPro版を購入していますし。
高度な技術の塊が低価格で手に入るのは良いのですが、競争が激しいですねぇ…

次は、更に踏み込んだ内容に入ろうと思います。
次回は、リフレクションアゼンブリマージを使った場合の難読化について検証します。