VS2010 でプログラムを作成しており、ビルド ターゲットは .NET 4です。デフォルトでDEP互換性フラグがオンになっていると思います。本当?
.NET はデフォルトでASLRとも互換性がありますか?また、ASLR は私のプロセスに対してデフォルトでオンになっていますか?それとも実行時に要求する必要がありますか?
VS2010 でプログラムを作成しており、ビルド ターゲットは .NET 4です。デフォルトでDEP互換性フラグがオンになっていると思います。本当?
.NET はデフォルトでASLRとも互換性がありますか?また、ASLR は私のプロセスに対してデフォルトでオンになっていますか?それとも実行時に要求する必要がありますか?
はい、NXCOMPAT フラグは、.NET 2.0 SP1 以降の標準の .NET 言語コンパイラによって有効になっています。
ASLR は、JIT コンパイラのおかげで、.NET プログラムでは本質的に自動化されています。JIT コンパイルされたマシン コードがどこに配置されるかは予測できません。ただし、CLR のリビジョン番号がまったく同じで、スタートアップ コードのフローがまったく同じで、プロセスに挿入される DLL がまったく同じで、まったく同じマシンで再現可能である可能性があります。ただし、マルウェアの標的になることは容易ではありません。ngen 化された .NET アセンブリは、.NET 3.5 SP1 リリース以降、ASLR をサポートしています。
データの ASLR ははるかに強力であり、攻撃に対するより重要な対策です。攻撃の大部分は悪意のあるデータから始まるため、重要です。プログラムを起動するたびに、スレッドのスタックの場所、GC ヒープ、および静的データが変更されます。あなたがAVEをデバッグしようとしているのはかなり苦痛です。
ASLR は、パッチを適用できない既知のセキュリティ上の欠陥から保護します。検証可能なコードでは珍しく、セキュリティ上の欠陥が最初に存在する必要があります。