这个标题概括了我的问题,但我会详细说明。我一直认为,任何没有管理权限的进程都不应该访问任何其他进程的内存空间,当然也不应该停止它的执行。
然而,由于visualstudio在非特权帐户下运行,我可以附加到在同一帐户下运行的一些进程并对其进行调试。为什么这是可能的?难道手术系统不应该阻止这种情况吗?
提前感谢并为加油
要访问任何其他进程的内存空间,我们需要使用PROCESS_VM_READ|PROCESS_VM_OPERATION|PROCESS_VM_WRITE
打开进程。。为此,不必具有SE_DEBUG_PRIVILEGE
——如果进程和调试器在同一会话中运行,则具有相同的令牌——通常是它的安全描述符(DACL
)允许为此调试器打开它。这是意料之中的事。所以这里的问题是,我们可以用完全访问权限打开进程进行调试吗?如果这个"对等"进程(在相同的用户下运行,具有相同的权限),为什么不呢?
以及来自DebugActiveProcess函数
调试器必须具有对目标进程的适当访问权限,并且它必须能够打开process_ALL_ACCESS的进程。DebugActiveProcess如果目标进程是使用安全描述符创建的,该描述符会向调试器授予任何小于满的权限,则DebugActiveProcess可能会失败通道如果调试进程具有SE_DEBUG_NAME权限授予并启用后,它可以调试任何进程。
和您自己的备注-除了受保护的进程,如果只有您的调试器在调用DebugActiveProcess时也受到保护的进程(保护级别不低)(是的,这也可能是受保护的调试进程)