01调试对象的构建

【太多事情要做了,这部分难度又很大,先写一下大体框架,到时候具体函数逆向分析过程给写出来】

 

0. 直接创建被调试程序与附加调试程序有什么区别吗?

  答:调用的函数不相同。

  

 

 

 

1. 调试程序如何与被调试程序建立连接的?

   答:两者连接思路很简单,通过在内核层创建一个 DEBUG_OBJECT 对象来建立链接。

  

 

 

2. 调试器如何与 DEBUG_OBJECT 来建立链接?

  答:通过调用一个 DbgUiConnectToDbg函数,在函数内首先调用 _ZwCreateDebugObject内核函数来创建一个DEBUG_OBJECT对象,并返回一个三环的句柄。

    之后再将该句柄保存在调试器TEB(fs):F24h处。

    

 

 

 

3. 被调试程序如何

  答:首先调试器获取到其被调试程序的PID与DEBUG_OBJECT的三环句柄,其传入到内核中,由NTDebugActiveProcess传入到被调试进程的 _EPROCESS.DebugPort中。

    这样就实现了 DEBUG_OBJECT 与 被调试进程的联系。

    

 

 

 

 

 

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