私はちょうどノートパソコンでメモリテストを実行していました(メーカーから、実行中Windows 10 Proのサービスとして) そして、システム内のすべてのメモリを実際にテストできると主張していることに気づきました (メモリの読み取りと書き込みが必要です)。
しかし、最近のシステムでは、アプリケーションは「実際の」メモリを取得することはなく、仮想メモリ イメージを取得します (基本的に、アプリケーションはシステム全体にアクセスできると考えていますが、実際にはメモリの仮想イメージです)。したがって、(バグがない限り) あるアプリケーションが別のアプリケーションが使用するメモリにアクセスすることは不可能です。
おそらく、これらのメモリ テスト プログラムは実際に動作し、私に嘘をついていないので、システム内のすべてのメモリを実際に読み書きしてテストできると仮定すると、これはセキュリティ上の問題ではないのでしょうか。Windows アプリケーションが実行に使用しているメモリをテストするという問題は言うまでもありません。
ここで何が欠けているのでしょうか?
ありがとう!
答え1
[...] あるアプリケーションが別のアプリケーションによって使用されるメモリにアクセスすることは不可能であるはずです (バグを除く)。
真実、アプリケーションに必要な権限/許可がない限りほとんどのシステムでは、デバッグなど、制限されたメモリにアクセスする正当な用途があるため、特別な権限でメモリアクセス制限を回避できます。特にMS Windowsでは、これを行うための関数ReadProcessMemory()
とがありますWriteProcessMemory()
。ただし、これらが機能するには特別な権限が必要です(例を参照)。メモリ エディターでメモリにアクセスするための権限を昇格するにはどうすればよいですか?詳細については)。
したがって、サービスは管理者または同様の権限で実行されると考えられます。
つまり、システム内のすべてのメモリを実際に読み書きしてテストできると仮定すると、これはセキュリティ上の問題ではないのでしょうか。
サービスにすべてのメモリを読み取るための適切な権限がある場合、これは OS の観点からはセキュリティ上の問題ではありません。サービスはインストール時に承認されています (ユーザーまたは製造元によって)。サービスにセキュリティ ホール (リモート コード実行の脆弱性など) がある場合は、実際にはセキュリティ上の問題になる可能性がありますが、これはサービスによって異なります (昇格された権限で実行されるすべてのサービスと同様)。
おそらくこれらのメモリテストプログラムは実際に機能し、私に嘘をついているわけではない。
それは当然のことではありません。ソフトウェア ベンダーは、他のベンダーと同様に、真実を曲げることがあります。サービスが、権限の問題とは無関係に、実行中のシステムでメモリをテストできるというのは、私には疑問に思えます。サービスが、他のソフトウェアに干渉することなく、使用中のメモリをテストできるのでしょうか。おそらく、彼らはそれをやってのけたのでしょう。あるいは、サービスは現在使用されていないメモリのみをテストしているか、読み取りのみをテストしているのかもしれません。分析しなければわかりません。
コメントで指摘されているように、BIOSメモリチェックやメムテスト86起動直後にオペレーティング システムをロードせずに実行され、メモリと CPU への完全かつ排他的なアクセスが可能になります。