.net アセンブリを逆コンパイルおよびリバース エンジニアリングすることは、標準的な方法です。
既存のアプリケーションに追加するいくつかのプラグイン アセンブリをリリースしたいのですが、それらを他のユーザーが利用したくありません。
これらのアセンブリのソースを非表示にするには、どのような方法がありますか?
.net アセンブリを逆コンパイルおよびリバース エンジニアリングすることは、標準的な方法です。
既存のアプリケーションに追加するいくつかのプラグイン アセンブリをリリースしたいのですが、それらを他のユーザーが利用したくありません。
これらのアセンブリのソースを非表示にするには、どのような方法がありますか?
ターゲット ハードウェアを制御しない限り、100% の保護を実現することは理論的に不可能です。CPU がそれを実行できれば、十分な時間と知識があれば、人間もそれを読み取ることができます。これは C# に限ったことではありません (ただし、通常はマネージ言語の方が簡単です)。Dotfuscator や XenoCode などの難読化ツールを使用して、逆コンパイルされたコードを理解しにくくすることができます。本当に心配なら、サーバー ベースのアプリケーションに移行する必要があります。
難読化ツールを使用できます。これは役に立ちますが、リバース エンジニアリングは依然として非常に可能です。
ユーザーのコンピューターは何をする必要があるかを知る必要があるため、あなたがそれを伝える必要があります。コンピュータの所有者はコンピュータを完全に制御できるため、コンピュータに何をするように指示したかを自分自身で知ることができ、別のことを行うように指示することができます。
ステガノグラフィと呼ばれるデータを隠す方法があります。まさにこれを行うためのフレームワークを書いたCodeProjectでカバーされた多くの記事の著者がいます。記事のタイトルは、1 から 12 までのシリーズの「ステガノグラフィー」だったと思います。作者の提携サイトです。
「Phoenix Protector」と呼ばれる難読化ツールもあり、.NET コードを難読化できます。個人的には試していませんが、良さそうです。
これがお役に立てば幸いです。よろしくお願いします、トム。
CLR COM API を使用して CLR をホストするアプリを作成できます。これにより、最初にネイティブ コード レベルでアセンブリを読み込んでデコードできます。いくつかのアンチリバース エンジニアリング手法を使用してネイティブ ローダーを強化すると、十分なセキュリティを実現できます。
少なくとも、DLL を難読化して、ハッカーや競合他社がコードを表示して理解できないようにする必要があります。難読化は 100% 絶対確実というわけではありませんが、彼らの行く手には十分に大きな障害があります。
Crypto Obfuscatorなどの一部の難読化ツールには、すべての dll をメインの exe に埋め込む機能があるため、dll がディスク上で明示的に表示されず、Reflector などのリバース エンジニアリング ツールで開くことができません。
それはソフトウェアです。何でも可能です。バイナリを暗号化し、実行時にそれらのすべてまたは一部をアプリケーションに復号化できます。誰にでもできるというわけではありませんが、どれだけ厳格になりたいかを決めるのはあなた次第です。