zoukankan      html  css  js  c++  java
  • 调试对象的构建

     Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html

    调试对象的构建

    一、从感性角度来理解调试器与被调试程序建立的连接

       1)调试程序与被调试程序通过什么来建立连接的呢?

      答:DEBUG_OBJECT。

      2)这 DEBUG_OBJECT 是什么呢?

      答:可以认为其是两个程序之间的中转站,它不是调试器,也不是被调试程序的内核对象。

        刚开始学习时,老搞不懂 DEBUG_OBJECT 到底是调试器对象还是被调试程序对象。

        但现在再来看,其根本不是同一类对象,前面那个是进程对象,而DEBUG_OBJECT是调试对象。

        当被调试程序出现异常时,其被调试程序不会发往调试器,而是发往调试对象DEBUG_OBJECT,由它负责代为发送到调试器来进行处理。

     

      

    二、调试的构建

      1)如何构建调试程序与被调试程序的呢?

      答:分为两种情况。

        1》创建调试进程,CreateProcess中修改Flag标志位。 一个简单的创建被调试进程的案例

        2》附加的形式,使用 DebugActiveProcess函数。

    三、DebugActiveProcess函数的逆向分析

      (这部分一共有六七个函数,太庞大了,我就直接贴出问题吧)

      1. 你对调试程序与被调试程序的链接存在哪些误区之前?
     
      2. 查看 _DbgUiConnectToDbg(ntdll.dll) 反汇编代码。
         1)指出哪个部分是创建 DEBUG_OBJECT 对象。
         2)指出哪个部分是将该 DEBUG_OBJECT 对象放入 TEB+0xF24h 处的。
     
      3. 搜索 WRK,来查找 DEBUG_OBJECT 的结构体的结构,并认真阅读里面的内容。
     
      4. 查看 _DbgUiDebugActiveProcess(ntdll.dll) 反汇编代码
          1)指出哪一部分是将 DEBUG_OBJECT 与 被调试程序建立联系。
          2)指出哪一部分是下系统断点。
     
      5. 查看 _NtDebugActiveProcess(ntoskrnl.exe) 反汇编代码
          1)指出哪一部分是检测自身(自己不能调试自己)。
          2)指出哪一部分是检测被调试程序是否是系统进程。
          3)指出哪一部分是将被 DEBUG_OBJECT 与 被调试程序建立联系
         
      6.查看 DbgkpSetProcessDebugObject(ntoskernl.exe) 反汇编代码
         快速找出哪一部分是 将DEBUG_OBJECT 填入 EPROCESS.DebugPort中。

  • 相关阅读:
    从索罗斯的“暴涨-暴跌”模型,看“房地产泡沫”
    在深圳有娃的家长必须要懂的社保少儿医保,不然亏大了!(收藏)
    深圳楼市2007vs2016
    细论庚金
    Win10无法安装提示磁盘布局不受UEFI固件支持怎样解决
    八字庚金特性
    广东省限价房转让需补70%的溢价
    DBUTIL 调用存储过程例子
    第二届八一杯网络大学生数学竞赛试题
    八一的专属上网导航服务
  • 原文地址:https://www.cnblogs.com/onetrainee/p/11891614.html
Copyright © 2011-2022 走看看