6

SeDebugPrivilege を調整し、システム プロセスを反復処理して OpenProcess を呼び出すプログラムがあります (その他の処理も行いますが、今は重要ではありません)。また、プログラムはもちろん管理者モードで実行されます。Windows XP および Windows 7では問題なく動作しますが、Windows 8.1 では、次のシステム プロセスで OpenProcess が ERROR_ACCESS_DENIED(5) で失敗します: smss.exe、csrss.exe、services.exe。私が SeDebugPrivilege で知っているように、これらのプロセスを開いて、それらのハンドルを取得できるはずです。Windows 8.1でのみこのエラーを引き起こす魔法の種類は何ですか?

(とにかく、CreateToolhelp32Snapshot の同じプロセスで同じエラーが発生します)

4

3 に答える 3

6

Windows 8.1 では、システム保護プロセスの概念が導入されています。これは、サードパーティのマルウェア対策ソフトウェアのコンテキストで文書化されていますが、特に重要なシステム プロセスを保護するためにも使用されていると考えるのが妥当と思われます。

システム保護プロセスは、DRM 手段として Windows Vista で導入された保護プロセス メカニズム(Microsoft Word ドキュメント)の拡張です。

デバッグ権限があっても、保護されたプロセスに対して次のアクセス権を取得することはできません。

  • DELETE
  • READ_CONTROL
  • WRITE_DAC
  • WRITE_OWNER
  • PROCESS_CREATE_THREAD
  • PROCESS_DUP_HANDLE
  • PROCESS_QUERY_INFORMATION
  • PROCESS_SET_QUOTA
  • PROCESS_SET_INFORMATION
  • PROCESS_VM_OPERATION
  • PROCESS_VM_READ
  • PROCESS_VM_WRITE

PROCESS_QUERY_LIMITED_INFORMATIONアクセスを要求することで、引き続きプロセスを開くことができるはずです。ドキュメントによると、SYNCHRONIZEアクセスPROCESS_TERMINATEも許可されています。

于 2015-02-03T20:48:28.260 に答える