- - PR -
C# クラスライブラリのソースを表示できなくするには
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-02-16 17:57
C# でクラスライブラリを作り、bin\Release にできた DLL を同じくC# で作った呼び出し元となる Windows アプリケーションのプロジェクトの参照に追加して問題なく呼び出せることは確認したのですが、クラスライブラリのメソッドにブレークポイントを置いて、止まったところでステップインするとクラスライブラリのソースが表示されてしまいます。
この DLL はバイナリのみ配布したいと考えているので、上のような使い方をされたときにソースが表示されたくないのですが、表示されないようにする方法はあるのでしょうか? bin\Release と bin\Debug の違いってまさにここかなぁと思ったんですが・・・ | ||||
|
投稿日時: 2009-02-16 18:16
デバッグ時にソースが表示されるのは、ソースが手元にあり、且つ IDE がソースの場所を知っているからです。
「プロジェクト」を参照するのではなく、「DLL」を直接参照した場合はデバッグ時にも (通常は) ソース表示されません。 DLL 自体にソースが含まれるわけではないので、「プロジェクト」を参照しようと「DLL」を直接参照しようと、DLL のみの配布時にはソースの表示はできません。 _________________ C#と諸々 | ||||
|
投稿日時: 2009-02-16 18:59
最近の逆コンパイラは性能が高いので、ほぼ元通りのコードを得られます。
対策として考えられるのは以下のような方法が考えられるかと。 1.Dotfuscatorのようなコード難読化ツールを使用するか、あるいはコードを暗号化するようなツールを使用する。 2.重要なコードはWEBサービスとして提供し、ユーザのコンピュータにはインストールしない。 | ||||
|
投稿日時: 2009-02-16 19:41
早速の回答ありがとうございます。
>よこけんさん 他のマシンに呼び出す側の Windows アプリケーションのプロジェクトをコピーし、呼び出されるクラスライブラリは DLL だけをコピーし DLL 参照に加えたところ、クラスライブラリの bin\Release/Debug どちらの DLL もソース表示・ステップインされないことを確認しました。 >甕星さん そうなんですか。今回配布を考えている DLL はそこまで徹底的に隠したい程ではないですが、隠したいときには教えていただいた情報を調べてみたいと思います。 | ||||
|
投稿日時: 2009-02-16 21:31
今移動中なので調べていませんが、メソッドの属性に「デバッガでステップインしない」ようにするものがあります。
| ||||
|
投稿日時: 2009-02-16 22:47
それは、下記のことでしょうけれども、今回の問題とは違うと思います。 http://www.atmarkit.co.jp/fdotnet/dotnettips/362stepthrough/stepthrough.html 今回のは「DLLを配布するだけでソースコードも読めちゃうの?」だと思いますので。 |
1