01調試對象的構建

【太多事情要做了,這部分難度又很大,先寫一下大體框架,到時候具體函數逆向分析過程給寫出來】

 

0. 直接創建被調試程序與附加調試程序有什麼區別嗎?

  答:調用的函數不相同。

  

 

 

 

1. 調試程序如何與被調試程序建立連接的?

   答:兩者連接思路很簡單,通過在內核層創建一個 DEBUG_OBJECT 對象來建立鏈接。

  

 

 

2. 調試器如何與 DEBUG_OBJECT 來建立鏈接?

  答:通過調用一個 DbgUiConnectToDbg函數,在函數內首先調用 _ZwCreateDebugObject內核函數來創建一個DEBUG_OBJECT對象,並返回一個三環的句柄。

    之後再將該句柄保存在調試器TEB(fs):F24h處。

    

 

 

 

3. 被調試程序如何

  答:首先調試器獲取到其被調試程序的PID與DEBUG_OBJECT的三環句柄,其傳入到內核中,由NTDebugActiveProcess傳入到被調試進程的 _EPROCESS.DebugPort中。

    這樣就實現了 DEBUG_OBJECT 與 被調試進程的聯繫。

    

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章