今日はGraphics.DrawImageUnscaled()がGraphics.DrawImage()の何のひねりも無い単なるラッパーである検証をします。
使うのは↓コイツです。
http://www.aisto.com/roeder/dotnet/
Reflector for .NET
.Netアセンブリにはネイティブなら完全消滅するような変数名もそのまま入っているので、ほぼ完全にソースに復元可能です。
ただしリバースエンジニアリングを軽々しく行うのは諸々問題があるように思いますので、
あくまでも自己責任でお願いします。
追記3/11:Microsoftでライブラリソースの公開がされているそうです。
JZ5さんの記事が参考になりました。JZ5さん感謝いたします。
http://www.atmarkit.co.jp/fdotnet/insiderseye/20080222sourcecode/sourcecode.html
?
●では簡単な手順で検証:
と思ったのですがこれは各自で色々お試しください。
http://www.atmarkit.co.jp/fdotnet/tools/dotfuscator/dotfuscator_02.html
http://sonic64.com/2005-10-11.html
他にもぐぐれば丁寧な使い方をご指導くださっているページはネットにあふれかえっておりますのでよろしくお願いいたします。
●もっともっと使い倒す手順:
?自分の作ったプログラムは果たしてどういう風にコンパイルされているのか?本当に意図したとおりのコードに翻訳されてるか?ってのが気になることってありませんか?そういう時には、以下はVisual Studio C# 2008 Express Editionの話ですが他のエディション、言語も似た手順で簡単に調べられます。
1.ツール→外部ツールメニューを開きます
2.「追加」から↓のように設定します。Reflector本体の場所は自身の環境にあわせて適宜変更します。ちなみに引数の$(TargetPath)は三角ボタンから「ターゲットパス」を選べば簡単に入力できます。
3.では何でも良いので適当にC#でプロジェクトを作りコンパイルOKまで進めます。私は仮に下のコンソールアプリを使いました。(ちゅうい:ニコちゃんやハートに突っ込み入れないように願います。)
4.ツールメニューを開くと先ほど作ったRefrectorメニューがあるので選択します。自分の作ったプログラムを逆アセンブルできます。
5.ちなみにTools→Optionsから表示フォーマットを変えるとdelegateが実装されていないソースとしても翻訳してくれます。
↓Optimization=3.5
↓Optimization=None