同様の質問hereおよびhereで説明されているように、コードをリバース エンジニアリングから保護したいと考えています。
私の状況は、Simucalが彼の (優れた) 回答で説明しているとおりです。
基本的に、ソース盗難の標的になる唯一の可能性は、ドメインに関連する非常に具体的でエンジニアリングが難しいアルゴリズムを持っている場合であり、それによって競合他社に有利になります. これは、アプリケーションのごく一部のリバース エンジニアリングを試みることが費用対効果の高い唯一の機会です。
私はまさにこの状況です。特定のドメインにとってエレガントで価値のある、設計が難しいアルゴリズム。
微調整と開発に何ヶ月も費やした結果、非常にコンパクト (約 100 行のコード) で洗練されたものになりました。コードのこの特定の部分をリバース エンジニアリングから保護するか、少なくとも合理的に困難にしたいと考えています。
このシナリオは、C# で記述されたリッチ クライアント アプリケーションであり、コードのこの部分をデプロイする必要があります。Web サービスから実行することはできません。
コードを抽出してアンマネージ ネイティブ バイナリに書き直すことは、パフォーマンス上の理由 (および境界を越える問題) のため、オプションではないと思います。
最初は単純な難読化を行いたかったのですが、コードのサイズが小さいため、これでは十分な保護が得られないと思います。
理想的には、アプリケーション全体を保護したいと考えていますが、通常の難読化ツールやサード パーティのパッカーを使いにくくしていると思われる主な問題が 2 つあります。
アプリケーションはプラグイン インターフェイスを提供するため、一部のアセンブリ (およびインターフェイス/クラス) を難読化してパックしないでください。
エラー レポートを受け取ったときに、実際のスタック トレースを取得できるようにしたいと考えています。これは、実際のコードへのマッピングの難読化によって実現できる可能性があります。
これらの問題はさておき (これについてもご意見をいただければ幸いです)、コードのごく一部をリバース エンジニアリングから保護するにはどうすればよいでしょうか? 誰かがコードを変更したりハッキングしたりすることは気にしませんが、理解しにくくリバース エンジニアリングしたいと考えています。