2012-03-23 25 views
2

在Windows(最好是XP)上,通常可以在進程寫入特定地址(在其虛擬地址空間中)時暫停進程?如果在特定地址寫入,掛起進程

問題很複雜,因爲加載的DLL執行寫操作而不是代碼進程本身的(PE)映像中。

回答

4

您可以使用VirtualProtectPAGE_GUARD或其他選項保護包含感興趣地址的頁面,並在地址寫入時發生異常。這種異常可以通過未處理的異常過濾器(取決於應用程序本身可以處理它)還是由進程外調試器應用程序(例如衆所周知的調試器或通過API的自定義應用程序調試過程)來處理。

如果需要,調試器應用程序可以暫停進程,或者使用快照創建小型轉儲。有關詳細信息,請參閱MSDN EXCEPTION_DEBUG_EVENT

每當正在調試的進程中發生異常時生成。 可能出現的異常包括嘗試訪問不可訪問的內存,執行斷點指令,嘗試除以0或 在結構化異常處理中記錄的任何其他異常。

DEBUG_EVENT結構包含一個EXCEPTION_DEBUG_INFO結構。 此結構描述導致調試 事件的異常。