zoukankan      html  css  js  c++  java
  • 全局句柄表

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

    全局句柄表

      在这前有一篇中我们介绍过私有句柄表

      对于私有句柄表,每个进程有一份。

      全局句柄表,就一份,其所有句柄都存储在这张表中,由操作系统维护。

      全局句柄表有一个好处,无论私有句柄表中再怎么隐藏,全局句柄表必须有一份,否则会造成程序的不稳定。

     

    一、全局句柄表与私有句柄表的不同

    1. 搜索位置

      私有句柄表地址是在该进程的 _KPROCESS+0xc4 _HANDLE_TABLE 中(TableCode)的位置。

      全局句柄表地址是以 PspCidTable 这个全局变量中存储,我们只需要搜索这个全局变量即可。

        索引直接使用进程的PID即可。(PID也即句柄值)

    2. 句柄结构体

      私有句柄的句柄结构为 _OBJECT_HEADER+BODY。

      全局句柄表只包含 BODY,因此找到地址不用再加上偏移+0x18。

     

    二、实验:通过全局句柄表找到 计算器 的_EPROCESS

    1. 打开计算器,打开任务管理器,找到计算器的PID 2036(0x7F4)

      

    2. 使用Windbg, kd > dd PspCidTable 指令获取全局句柄表  _HANDLE_TABLE 的值

      kd> dd PspCidTable
        80562460  e1000898 00000002 00000000 00000000
    3. 解析出其 TableCode 地址,发现其为一级地址

      kd> dt _HANDLE_TABLE e1000898
      ntdll!_HANDLE_TABLE
         +0x000 TableCode        : 0xe1003000
    4. 计算其偏移地址 dt _EPROCESS
    0xe1003000+0x7f4/4*8,查看 0x174 位置的内容。

      kd> dt _EPROCESS 816a2180

        ntdll!_EPROCESS

        +0x174 ImageFileName    : [16]  "calc.exe"

    5. 结果正是我们所需要的。

  • 相关阅读:
    第13组 Beta (2/6)(俞子君)
    第13组 Beta (1/6)(俞子君)
    第13组 Alpha (6/6)(俞子君)
    第13组 Alpha (5/6)(俞子君)
    第13组 Alpha (4/6)(俞子君)
    第13组 Alpha (3/6)(俞子君)
    第13组 Alpha (2/6)(俞子君)
    番茄蛋花汤口罩识别系统汇报
    β(56/6)
    β(34/6)
  • 原文地址:https://www.cnblogs.com/onetrainee/p/11764974.html
Copyright © 2011-2022 走看看