Debugger.IsAttached
アプリが現在実行時にデバッグされているかどうかを判断する方法については、すでに知っています。デバッガー自体について詳しく知るにはどうすればよいですか?
たとえば、Visual StudioからデバッグされているアプリとWinDbgによってデバッグされているアプリをどのように区別できますか?
私のシナリオでは、アプリはVisualStudioから起動されません。デバッガーは、すでに実行中のプロセスに接続されている場合があります。
Debugger.IsAttached
アプリが現在実行時にデバッグされているかどうかを判断する方法については、すでに知っています。デバッガー自体について詳しく知るにはどうすればよいですか?
たとえば、Visual StudioからデバッグされているアプリとWinDbgによってデバッグされているアプリをどのように区別できますか?
私のシナリオでは、アプリはVisualStudioから起動されません。デバッガーは、すでに実行中のプロセスに接続されている場合があります。
これを行うことを考える1つの方法は、マシン上の既存のプロセスを列挙してから、各プロセスのハンドルを列挙することです。したがって、WinDbg.exeのインスタンスが実行されていて、それがプロセスへのハンドルを持っている場合は、WinDbg.exeによってデバッグされている可能性があります。
ただし、デバッガーが「非侵襲的に」接続されている可能性があるため、実際には複数のデバッガーが接続されている可能性があることに注意してください。または、リモートでデバッグされているか、シリアルポートまたはUSBを介して接続されたカーネルデバッガーを介してデバッグされている可能性があります。
デバッガーに関する多くの優れた情報については、アンチデバッグ技術を確認できます。