DLL内に公開されているすべてのクラスを「public」ではなく「internal」としてマークし、DLL内で"InternalsVisibleTo"属性を使用して、使用を許可されているDLL(およびexe)あなたの内部の種類。これはすべての参加者に強要される必要があるかもしれませんが、とにかくそれは良いことです。
最終的に、コードがハッカーのマシン上で実行されているときに、決定されたハッカーがコードにアクセスするのを防ぐ絶対的な方法はありません。マシンで実行できるすべてのコードは、十分に高度なツールと経験を使って、別のものに分解して再組み立てすることができます。
コードセキュリティにアプローチする最善の方法は、「誰かがライセンスまたは認可なしでこのコードを使用するためにはどれくらい難しいのですか?また、そのコードを達成するために費やす時間/金額? "何もしなければ、誰かが他のプロジェクトでDLLを使用するのはとても簡単です。いくつかの簡単なことをすれば、誰かがあなたのDLLを他の場所で使用するのが不便になることがあります。あなたが何ヶ月もの努力を払うと、誰かがあなたのコードを悪用することを非常に困難にするかもしれませんが、決して不可能にすることはできません。
私が想像しているように絶対安全な方法の1つは、クライアント(またはハッカー)のマシンでコードを実行しないことです。代わりにWebサービスを実行し、ハッカーがあなたのプロセスでデバッガを起動したり、コードを逆アセンブルしたりすることができないサーバーにコードを保存してください。コードセキュリティは、サーバーの物理的なセキュリティとサーバーのポートへのネットワークアクセスセキュリティによって定義されます。これらの攻撃ベクトルは、ハッカーのマシン上で実行されるコードに対して行うことができるものよりも多くの桁違いに回避できません。
一部のソフトウェア企業では、アプリケーションの一部をクライアントからクラウドに移動することは、スケーラビリティの向上や更新の容易化、コストの削減を目的としたものではなく、コードセキュリティと著作権侵害防止です。
デコンパイルを防ぐか、単に使用しないようにしてください。 – NotMe
今のところ、私は使用を探していますが、本当に両方を探しています。それに応じて質問を更新しました。 – Matt