問題タブ [ngen]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - .NET Framework アセンブリの検証
ドイツの VB.NET フォーラムを調べたところ、頭が痛くなる興味深いものがありました。
ReflexIL またはその他の IL エディターを使用して .NET Framework アセンブリを編集することは実際には可能です。バイパスする必要があるのは、アセンブリの厳密な名前の署名だけです。sn.exe -Vr [assemblyname]
アセンブリ IL を変更した後、厳密な名前の検証をスキップするために実行する必要があります。その後、キャッシュされたネイティブ イメージをクリアする必要があります。C:\Windows\assembly
ディレクトリを調べて、アセンブリに関連するすべての画像を削除するだけです。その後、再起動します。ログインしたら、実行しますngen install [assemblyname]
。これで、新しいネイティブ イメージが生成されます。
これは機能します。仮想環境 (Windows XP x86) でこの手順を確認しました。今、私が最も心配しているのは、.NETVerifyHash
または.NETVerifyData
のメソッドを簡単にバイパスできることですRSACryptoServiceProvider
。これも実際に機能します。私の友人とテストした私は、この問題を確認できました (スクリーンショットを参照してください)。それはかなり簡単でした。
たとえば、.NET Framework 暗号化クラスに基づいて構築されたライセンス システムを作成すると、フレームワークを使用するシステム上のすべての .NET アプリケーションでシステム全体がバイパスされる可能性があります。また、メソッドにフックするだけで、私が呼び出した関数の入力を誰でもログに記録して変更できます。
ここで私の質問は次のとおりです。これは大きな問題になる可能性があるため、どうすればそれについて何かできるでしょうか? もちろん、悪意のあるユーザーが私のアプリケーションを編集することはできますが、システム全体でこれを行うことほど悪くはありません。フレームワークのチェックサムの検証を考えていましたが、.NET Framework にはさまざまな更新プログラムがあるため、これは不可能のようです。
解決策や提案はありますか?マイクロソフトはこの問題に何らかの方法で対応していますか?
.net - アセンブリのネイティブ イメージ全体でのメソッドのインライン化
別の質問で説明されているように、メソッドにTargetedPatchingOptOutAttributeが設定されている場合、Ngen は通常、アセンブリ間でメソッドをインライン化することのみが許可されます。
しかし、これはDependencyAttributeを使用してハード バインドされたアセンブリにも当てはまりますか?LoadHint.Always
編集:おそらく私の最初の質問に対する答えはノーです。それ以外の場合TargetedPatchingOptOutAttribute
、このアセンブリは常にハード バインドされているため ( DefaultDependencyAttributeが設定されているため)、mscorlib で が使用されても意味がありません。だから私は私の質問を言い換えたいと思います:TargetedPatchingOptOutAttribute
アセンブリのネイティブ イメージ全体でメソッドをインライン化する唯一の方法はありますか?
c# - MethodImplOptions.AggressiveInliningとTargetedPatchingOptOut
MethodImplOptions.AggressiveInlining
オプション付きのMethodImplAttributeと?の違いは何TargetedPatchingOptOut
ですか?
私がグーグルで検索したとき、誰もが両方とも(かもしれない)方法をインラインであると言っているようですが、違いはありません。
.net - NGEN とプラットフォーム ターゲットは同じものですか?
NGEN.EXE を使用して、MSIL アセンブリをネイティブ アセンブリにコンパイルできます。ただし、ソース コードがある場合は、プロジェクト オプションで [プラットフォーム ターゲット] を選択することもできます。そこで x64 を選択すると、x64 マシンで NGEN.EXE を実行するのと同じことになりますか?
.net - NGen およびジェネリック コレクション。ジッティングを取り除く方法は?
ngen とジェネリック コレクションに苦労しています。ソリューション内のすべてのアセンブリを ngen しましたが、アプリがそのコードを実行するたびに何らかの形でジッティングが発生します。
MDA メッセージ:
NGen とジェネリック コレクションに問題はありますか?
.net - `*.ni.dll.aux` ファイルの形式は何ですか?
*.ni.dll.aux
にあるファイルの形式 (データ レイアウト) はC:\Windows\assembly\NativeImages_v4.0.30319_64
何ですか? これらは によって生成された補助ファイルであることを理解していますngen.exe
。それらにはどのようなデータが含まれていますか?