DOBON.NET DOBON.NETプログラミング掲示板過去ログ

作成したDLLを他人に使えなくするには?

環境/言語:[言語 : C# / .NET Framework : 3.5]
分類:[.NET]

【解決したい問題】

いくつかソフトを作っているため自分用便利クラスを共通プロジェクトとして作成してDLL化して各ソフトから参照して使用しています。

ただDLLだと他の人も使用可能になってしまいますが これを使用できないように制限するには一般的にどういう方法を使うものなのでしょうか?


プロジェクト内の各クラスにキーを渡せないと使えないようにする、とかいくつか考えましたが すでにクラスが100ぐらいあるし 直接参照可能なstaticなメソッドも結構あるので今から作り直すのはかなり面倒です。

DLL化したからって誰にでも使ってほしいわけじゃないケースは多いと思うのですが一般的にどう対応しているのでしょうか?
使ってほしくないから各プロジェクトにコピペしてたらバージョン管理が大変になってしまいますし・・・


今回ソフトのかなりコアな処理を自分の作る別ソフトでも使うためにDLL化しようと思ったのですが これをDLL化して他の人に利用されたら 作成してるソフトのほぼ全機能が簡単に作れてしまうなぁ、ということで質問しました。


ちなみに専門はWEBでJavaやPHP歴は10年以上ですが C#でのWinアプリは適当にググりながら作って1年ほどでちゃんと勉強したことはないので .netframeworkとかWinアプリの基本的なことは抜けてるかもしれません。

キーワードだけでもわかればググって調べますのでよろしくお願いします。
> キーワードだけでもわかればググって調べますのでよろしくお願いします。

  ググッても、そいいう情報は出てこないと思うナ〜
  で、その内容を掲示板でバラスの?

  別段、.NETに限らすWin32 DLLでも、同様の方法で動かなくする
  方法はあるし、ある意味、簡単かもしれない。

  DLLって呼ばれた時、どういう挙動をするのか、その動作が解れ
  ば、そこに何らかの情報をチェックする機能を入れて、NGなら
  エラーさせればよい・・・

  別段、組み込まれたすべてのクラスや関数にチェック機能を入れ
  なくても済む。

  逆に言えば、その部分をハッキングしてつぶせば動いてしまう。

  手間を惜しむか、手軽さをとるか・・・は、ご自身で考えて下さ
  い。

※ 本来、プログラマーはそこを考えるのが仕事のはずだと思います
  がネ〜

以上。
DLLの趣旨に反しますがEXEに含んでしまえば誰も使えないです?
EXEから呼び出せるのであれば意味ないですね・・・

詳しく読んでないので仕様を満足するかわかりません
http://www.atmarkit.co.jp/fdotnet/dotnettips/426ilmerge/ilmerge.html
>オショウ さん
ありがとうございます。

そうすると皆自分で独自仕様で実装しているということですか。。。
たいていの人が抱えてる課題だから共通的に使える仕組みが何かしら作ってるところあるんじゃないかなぁ?と予想していたのですが・・・

とりあえず逆コンパイルしたときの難読化をしてみて +何かしら独自仕様で考えてみたいと思います。
DLLが呼ばれるときの仕組みはろくに知らないので調べてみたいと思います。


>Mira さん
ありがとうございます。
確かにマージしてしまえばDLLだけ使われることはなさそうですね。
こちらも少し試してみたいと思います。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板