如果在特定地址写作,则暂停流程

时间:2012-03-23 11:18:48

标签: windows winapi memory x86 suspend

在Windows(最好是XP)上,通常可以在写入特定地址(在其虚拟地址空间中)时暂停进程吗?

由于加载的DLL执行写入操作而不是代码本身的(PE)图像中的代码,因此问题变得复杂。

1 个答案:

答案 0 :(得分:4)

您可以使用VirtualProtectPAGE_GUARD或其他选项保护包含感兴趣地址的网页,并在地址写入时触发异常。这种异常可以由未处理的异常过滤器处理(取决于,应用程序可能正在处理它),或者由进程外调试器应用程序处理,例如众所周知的调试器或通过API的自定义应用程序调试过程。

调试器应用程序可以在必要时挂起进程,或者使用带有快照的minidump。有关详细信息,请参阅MSDN EXCEPTION_DEBUG_EVENT

  

在正在调试的进程中发生异常时生成。   可能的例外包括尝试访问无法访问的内存,   执行断点指令,试图除以零,或   结构化异常处理中提到的任何其他例外。

     

DEBUG_EVENT结构包含EXCEPTION_DEBUG_INFO结构。   此结构描述了导致调试的异常   事件