title: How do debuggers bypass Image File Execution Options when launching their debugee?
body: <p>I'm doing some poking around in Windows internals for my general edification, and I'm trying to understand the mechanism behind Image File Execution Options. Specifically, I've set a Debugger entry for calc.exe, with <code>"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NoExit -Command "&amp; { start-process -filepath $args[0] -argumentlist $args[1..($args.Length - 1)] -nonewwindow -wait}"</code> as the payload. This results in recursion, with many powershell instances being launched, which makes sense given that I'm intercepting their calls to <code>calc.exe</code>.</p>
  
  <p>That begs the question, though: how do normal debuggers launch a program under test without causing this sort of recursive behavior?</p>