在 Windows(最好是 XP)上,通常可以在进程写入特定地址(在它的虚拟地址空间中)时挂起它吗?
由于加载的 DLL 执行写入操作而不是进程本身的 (PE) 映像中的代码,因此问题变得复杂。
VirtualProtect
您可以使用and或其他选项保护包含感兴趣地址的页面,并PAGE_GUARD
在地址写入时遇到异常。此类异常可以由未处理的异常过滤器(取决于应用程序可能自己处理)或进程外调试器应用程序(例如众所周知的调试器或通过 API 的自定义应用程序调试过程)来处理。
调试器应用程序可以在必要时暂停进程,或者使用快照进行小型转储。有关详细信息,请参阅 MSDN EXCEPTION_DEBUG_EVENT
:
每当正在调试的进程中发生异常时生成。可能的异常包括尝试访问不可访问的内存、执行断点指令、尝试除以零或结构化异常处理中指出的任何其他异常。
DEBUG_EVENT 结构包含一个 EXCEPTION_DEBUG_INFO 结构。此结构描述导致调试事件的异常。