2011-12-07 11 views
2

ILSPyとする。私のアセンブリを見ると、元のC#を見ていますか?または、このコードは、リバースエンジニアリングプロセスのいくつかのタイプを使用してCILから再構築されていますか?ディスアセンブラまたはリバースエンジニアリングされたCILで元のコードを調べていますか?

私の理解では、リリースアセンブリには元のコードCILだけが含まれていません。それで、リリースモードでアセンブリをビルドすると、それは違いがありますか?

答えて

4

リリースまたはデバッグアセンブリのいずれもオリジナルのソースコードを含んでいません。

ILSpy &友人はコンパイルされたCILを分析して、合理的なC#の同等物を抽出します。

1

ILからコードを再構築しています。この再構築プロセスは、デバッグモードまたはリリースモードでビルドされているかどうかに関係なく、どの.NETアセンブリでも実行できます。

ソースコードがこのようにアセンブリから再構築されるのを防ぐことはできませんが、コードをあまり有用でわかりにくくしたい場合は、さまざまな.NET難読化ツールを使用できます。

4

Release vs Debugはまだ大きな違いがあります。コンパイラは最適化を行います。 Scott Hanselman's post about Release vs Debugを参照してください。

ILSpyの意味では、はい、CILを表示してリバースエンジニアリングして、合理的なC#/ VB表現にします。私はILSpyがそれで非常に良い仕事をすることを認めます!私は他のアセンブリを逆にして、コードを完全に理解することができます。私がWPFやGUIのもので壊れてしまったのは唯一の時間でしたが、これもうまくいく方法があると確信しています。

アセンブリの逆転を防止し、知的財産を保護するという点で、Dotfuscatorまたはその他の難読化ツールを使用してください。

+0

+1 shanselmanの素晴らしいリンク。難読化全体に精通していますが、それは一部の人々にとって有用であると確信しています。 –

0

実際には、ILMergeまたは.net FuZeを使用して、exeおよびdllをexeまたはdllのコンテナにラップして、逆アセンブルするのが難しくなります。

関連する問題