私はあなたが達成しようとしていることにいくつかの問題を見ることができます。
1)@Mehrdadが述べたように、ネイティブイメージが存在する場合でも、メタデータにはアセンブリが必要です。
2)ネイティブイメージは、コンパイルされたマシンでのみ有効です。JITコンパイラは、コードを実行する必要があるハードウェアを正確に認識しているため、通常は実行できない最適化を実行します。
3)ネイティブイメージでも逆コンパイルできます。appartをマネージドdllにする方が少し簡単です。
ソースコードを隠したい理由を教えていただけませんか?
編集:WGAの新しいバージョンがどれだけ早くハッキングされるかを判断すると、ソフトウェアがリモートで有用である場合、ソフトウェアの新しいバージョンごとに数時間以内に誰かがキーアウトしてインターネット(またはp2pなど)にアクセスする可能性があります。そして彼らは、ネイティブイメージを分解することに非常に満足している人々になるでしょう。または、マシンコードを読んでください:)
私の個人的なアプローチは、アプリケーションが適切に機能し、適正な価格であることを確認することです。正直な人はそれを盗むことはありません、不正直はあなたが何をするかに関係なく道を見つけるでしょう。最終的に、アプリケーションを実行する場合、最初に難読化ツールを使用してリフレクターを使用するのを少し難しくすることはできますが、最終的には実際の生活と同じように、アプリケーションを完全に制御するためにできることはありません。実際、ロックは正直な人を締め出すだけです。
もちろん、アプリケーション機能の重要な部分をクライアントからWebサービスに移動できる場合は、より多くのチャンスがあります。クライアントのユーザー名とパスワードを使用してアカウントを作成できます。アプリケーションは、実行時にこれを要求し、それを使用してWebサービスへの認証を行います。このアプリケーションの使用が期限切れになった場合、Webサービスは要求を拒否します。