全局句柄表

 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. 结果正是我们所需要的。

原文地址:https://www.cnblogs.com/onetrainee/p/11764974.html

时间: 2024-11-05 22:58:40

全局句柄表的相关文章

句柄表(私有句柄表)

 Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 句柄表(私有句柄表) 我们在R3环编程中,会接触到句柄HANDLE的概念. 比如OPENPROCESS,打开进程获取其进程句柄,这些被称为“内核句柄”. 注意,与GUI图形界面不同,那些 画刷句柄 被称为“用户句柄”,不在我们讨论范围之列. 一. 句柄表的基本概念 句柄表分为私有私有句柄表和全局句柄表,我们这一节只讨论私有句柄表. 每一个进程都有自己的私有句柄表

Windbg调试(关于句柄表的获取,32位)

今天利用Windbg(x86)进行了获得句柄表的调试,从中获益良多,对调试步骤和按键又一次进行了熟悉,对于句柄表页的概念更是得到了进一步的清晰认识.windbg调试和句柄表不熟悉的朋友可以借鉴我的调试步骤l来熟悉句柄表基础知识, 调试步骤和获取部分如下. 3: kd> dt _EProcess 891ad030 nt!_EPROCESS +0x0f4 ObjectTable : 0x9eca0ef0 _HANDLE_TABLE3: kd> dt _HANDLE_TABLE 0x9eca0ef0

扫描系统句柄表(WIN7 x86)(附录源码)

PspCidTable存放着系统中所有的进程和线程对象,其索引也就是进程ID(PID)或线程ID(TID).先通过它来看看windbg里的HANDLE_TABLE结构: 可以看到地址 0x83f41bc4中存放的内容是 0x 8da010a8,这是系统的_HANDLE_TABLE的结构. 好了,现在windbg是得到HANDLE_TABLE结构了,还是要代码实现的.这里只简单用一下加偏移: //system进程的eprocess地址 PEPROCESS EProcess = (PEPROCESS

[转载]关于句柄表的一些文章

文章链接: 1> Windows内核情景分析 3.4.1 Windows 进程的句柄表 2> Windows 句柄表格式 3> Windows句柄表分配算法分析 4> 浅谈Windows句柄表 5> 句柄啊,3层表啊,ExpLookupHandleTableEntry啊... 5楼 -------------------------------------------------------------------------------------------- <E

句柄表

kd> dt_handle_Table e1931a40nt!_HANDLE_TABLE   +0x000 TableCode        : 0xe2016000   +0x004 QuotaProcess     : 0x86335020 _EPROCESS   +0x008 UniqueProcessId  : 0x00000700 Void   +0x00c HandleTableLock  : [4] _EX_PUSH_LOCK   +0x01c HandleTableList  :

被Oracle全局暂时表坑了

今天凌晨4点多钟,在客户现场的负责人打电话给我,说非常奇怪,下载功能时快时慢.此下载功能非常复杂,之前一直是我优化,在半梦半醒中打开电脑,通过远程看着现场同事在PL/SQL developer中操作.运行同一条SQL,时快时慢,快的时候大概0.6s,慢的时候超过1分钟. 这条SQL有调用一个函数,功能是动态生成接近200条查询语句,SQL中都是有绑定变量的.是现场的測试环境,刚刚部署,心想应该不是数据库负载所致. 1. 抓取数据库AWR报告,全然没有压力,数据库server配置都是杠杠的.此刻心

零基础逆向工程39_Win32_13_进程创建_句柄表_挂起方式创建进程

1 进程的创建过程 打开系统 --> 双击要运行的程序 --> EXE开始执行 步骤一: 当系统启动后,创建一个进程:Explorer.exe(也就是桌面进程) 步骤二: 当用户双击某一个EXE时,Explorer 进程使用CreateProcess函数创建被双击的EXE,也就是说,我们在桌面上双 击创建的进程都是Explorer进程的子进程. CreateProcess BOOL CreateProcess( LPCTSTR lpApplicationName, // name of exe

css全局样式表

/*==全局样式==*/*{padding:0;margin:0;}div,dl,dt,dd,form,h1,h2,h3,h4,h5,h6,img,ol,ul,li,table,th,td,p,span,a{border:0;}img,input{border:none;vertical-align:middle;}body{font-family:Tahoma,Arial,Helvetica,"宋体";font-size:12px;text-align:center;backgrou

Ring3句柄表的枚举

由于windows并没有给出枚举所有句柄所用到的API,要获得句柄,我们必须使用未公开的Native API才可以,使用如下函数: NTSTATUS WINAPI NtQuerySystemInformation( _In_ SYSTEM_INFORMATION_CLASS SystemInformationClass, _Inout_ PVOID SystemInformation, _In_ ULONG SystemInformationLength, _Out_opt_ PULONG Re