これは可能ですか?.NET Frameworkはバイトコードのメタデータに依存していますか?私が書いたアプリケーションがリフレクターまたは同様の.NETデコンパイラーで動作しないようにしたいのですが。
6 に答える
メタデータを削除すると、フレームワークはコードを読み込めなくなったり、参照している他のアセンブリを特定したりできなくなるため、いいえ、それはお勧めできません。
難読化ツールを使用すると、「攻撃者」がコードを逆コンパイルするのがはるかに難しくなりますが、結局のところ、誰かがやる気があり賢い場合、それらを止めるためにできることはあまりありません.
.NET は常に MSIL にコンパイルされ、MSIL は生の x86 よりも本質的に読みやすいです。これは、.NET を使用する場合のトレードオフの 1 つにすぎません。
ご心配なく。Apache、Linux、およびその他すべてのソース コードはネット上で無料で入手できますが、Microsoft に大きな競争上の優位性を提供していません :-)
Assembly Manifestについて言及していると思います:
静的か動的かにかかわらず、すべてのアセンブリには、アセンブリ内の要素が相互にどのように関連しているかを説明するデータのコレクションが含まれています。アセンブリ マニフェストには、このアセンブリ メタデータが含まれています。アセンブリ マニフェストには、アセンブリのバージョン要件とセキュリティ ID を指定するために必要なすべてのメタデータと、アセンブリのスコープを定義し、リソースとクラスへの参照を解決するために必要なすべてのメタデータが含まれています。
.Net アセンブリの最も重要な機能の 1 つは、それらが自己記述型のコンポーネントであり、これがマニフェストによって提供されることです。したがって、それらを削除すると、どういうわけかその目的が無効になります。
これは、次の質問と同じように見えます。
.net アセンブリのマニフェストを非公開にするにはどうすればよいですか?
そこで私の答えを見てください:
.net アセンブリのマニフェストを非公開にするにはどうすればよいですか?
「あなたが話しているのは「難読化」だと思います。ネット上にはそれに関する記事がたくさんあります。
http://en.wikipedia.org/wiki/難読化
.NET での難読化のための「標準」ツールは、Preemptive Solutions によるものです。
http://www.preemptive.com/obfuscator.html
Visual Studio に同梱されているコミュニティ エディションを使用できます。
ILDasm について言及されましたが、.NET Reflector を見たことがありますか?
http://aisto.com/roeder/dotnet/
マニフェストをリリースすると、人々が何を見ることができるかについて、さらに良いアイデアが得られます!」
メタデータを削除できるとは思いませんが、IP を保護したい場合はコードを難読化できます。
Dotfuscator は、コードを逆コンパイルできないようにします http://www.preemptive.com/dotfuscator.html
編集:これはプロフェッショナルバージョンであり、無料のコミュニティバージョンにはビジュアルスタジオが付属していることに言及する必要がありました
VMware の ThinApp (以前の Thinstall) のようなソリューションは、コードの保護にも少し役立ちませんか? それは非常に高い価格で提供されますが..