今天利用Windbg(x86)进行了获得句柄表的调试,从中获益良多,对调试步骤和按键又一次进行了熟悉,对于句柄表页的概念更是得到了进一步的清晰认识.windbg调试和句柄表不熟悉的朋友可以借鉴我的调试步骤l来熟悉句柄表基础知识, 调试步骤和获取部分如下。

3: kd> dt _EProcess 891ad030
nt!_EPROCESS
+0x0f4 ObjectTable : 0x9eca0ef0 _HANDLE_TABLE
3: kd> dt _HANDLE_TABLE 0x9eca0ef0
nt!_HANDLE_TABLE
+0x000 TableCode : 0x83b15001 //00 01 10 11
+0x004 QuotaProcess : 0x891ad030 _EPROCESS
+0x008 UniqueProcessId : 0x000008f0 Void
+0x00c HandleLock : _EX_PUSH_LOCK
+0x010 HandleTableList : _LIST_ENTRY [ 0xa5adf668 - 0x90347b38 ]
+0x018 HandleContentionEvent : _EX_PUSH_LOCK
+0x01c DebugInfo : (null)
+0x020 ExtraInfoPages : 0n0
+0x024 Flags : 0
+0x024 StrictFIFO : 0y0
+0x028 FirstFreeHandle : 0xb04
+0x02c LastFreeHandleEntry : 0xa73f6ff8 _HANDLE_TABLE_ENTRY
+0x030 HandleCount : 0x29d
+0x034 NextHandleNeedingPool : 0x1000
+0x038 HandleCountHighWatermark : 0x2f5
3: kd> dd 0x83b15000
83b15000 8f46f000 a73f6000 00000000 00000000
3: kd> dd 8f46f000
8f46f000 00000000 fffffffe 8e3ed141 00000003 //8个字节为一个_HANDLE_TABLE_ENTRY结构体
8f46f010 8a25bca9 00100020 8a3eb621 00100020 //第一组是"垃圾"
8f46f020 9ec983c1 00020019 88ed6109 001f0001 //_HANDLE_TABLE_ENTRY中的第一个成员&8 就是_Object_Header
8f46f030 8a414881 001f0001 8f5ff521 00020019
8f46f040 8a414841 001f0003 8a28af29 021f0003
8f46f050 8a120a81 000f037f 88e2ded1 000f01ff
8f46f060 8a120a81 000f037f 9eda6171 00000001
8f46f070 8a2a0a71 00000804 88d2bac1 00000804

3: kd> dt _HANDLE_TABLE_ENTRY 8f46f020
nt!_HANDLE_TABLE_ENTRY
+0x000 Object : 0x9ec983c1 Void
+0x000 ObAttributes : 0x9ec983c1
+0x000 InfoTable : 0x9ec983c1 _HANDLE_TABLE_ENTRY_INFO
+0x000 Value : 0x9ec983c1
+0x004 GrantedAccess : 0x20019
+0x004 GrantedAccessIndex : 0x19
+0x006 CreatorBackTraceIndex : 2
+0x004 NextFreeTableEntry : 0x20019

//88ed6109&8 这个重要
3: kd> dt _object_header 88ed6108
nt!_OBJECT_HEADER
+0x000 PointerCount : 0n3
+0x004 HandleCount : 0n1
+0x004 NextToFree : 0x00000001 Void
+0x008 Lock : _EX_PUSH_LOCK
+0x00c TypeIndex : 0x24 '$'
+0x00d TraceFlags : 0 ''
+0x00e InfoMask : 0xc ''
+0x00f Flags : 0x40 '@'
+0x010 ObjectCreateInfo : 0x8a184340 _OBJECT_CREATE_INFORMATION
+0x010 QuotaBlockCharged : 0x8a184340 Void
+0x014 SecurityDescriptor : (null)
+0x018 Body : _QUAD

3: kd> !object 88ed6108+0x18
Object: 88ed6120 Type: (8792e040) ALPC Port
ObjectHeader: 88ed6108 (new version)
HandleCount: 1 PointerCount: 3

Windbg调试(关于句柄表的获取,32位)的更多相关文章

  1. Java随机获取32位密码且必须包含大小写字母、数字和特殊字符,四种的任意三种

    Java随机获取32位密码且必须包含大小写字母.数字和特殊字符,四种的任意三种 Java随机获取32位密码且必须包含大小写字母.数字和特殊字符,四种的任意三种,代码如下: import java.ut ...

  2. Java中获取32位UUID

    public class createUUID { public static void main(String[] args) { String uuid = UUID.randomUUID().t ...

  3. Oralce获取32位随机数

    SELECT SYS_GUID() from dual;

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

    PspCidTable存放着系统中所有的进程和线程对象,其索引也就是进程ID(PID)或线程ID(TID).先通过它来看看windbg里的HANDLE_TABLE结构: 可以看到地址 0x83f41b ...

  5. 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用

    32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX  可以这样想,16位通 ...

  6. Windows:32位程序运行在64位系统上注册表会重定向

    参考资料 微软注册表英文文档 StackOverflow社区回答 1.注册表位置 64bit系统(Windows Server 2008 R2只有64bit系统)的注册表分32 位注册表项和64位注册 ...

  7. Wow6432Node(32位程序的注册表内容都在这个节点下,也可直接使用%systemroot%\syswow64\regedit进行编辑)

    64 位版本 Windows 中的注册表分为 32 位注册表项和 64 位注册表项.许多 32 位注册表项与其相应的 64 位注册表项同名,反之亦然. 64 位版本 Windows 包含的默认 64 ...

  8. 在x64计算机上捕获32位进程的内存转储

    这是一个我经常遇到的问题,我们经常会遇到这样的情况:我们必须重新捕获内存转储,因为内存转储是以“错误”的方式捕获的.简而言之:如果在64位计算机上执行32位进程,则需要使用允许创建32位转储的工具捕获 ...

  9. 32位程序调用Oracle11gR2数据库libclntsh.so失败

    [问题描述]32位程序调用Oracle11gR2数据库的libclntsh.so库时会返回失败. [问题原因]32位程序只能调用32位的Oracle客户端实例包,而R2数据库默认安装完毕后是没有lib ...

随机推荐

  1. 第一天的php体验

    第一次了解php.以前对于程序猿的认知是很片面的.因为没有了解过.今天通过一天的了解交流,有了新的认知.对于这个主要应用于前端的语言还是很有兴趣的.毕竟可以亲眼看到自己做出来的网页,心里的成就感肯定满 ...

  2. mysql为什么范围查询(>,<,between,%like,like%)之后的索引无效

    因为使用了范围索引,所以会使用满足范围的所有的值,也就是说存储引擎在这个时候会提取出满足之后条件的所有值,并遍历获取满足之后条件的值. http://www.itpub.net/thread-1901 ...

  3. linux之无名管道

    1.查看命令: man 2 pipe 2.头文件:#include <unistd.h> 3.函数原型: int pipe(int pipefd[2]); a.pipefd[2] :无名管 ...

  4. 借助VBScript让Windows系统发出声音

    借助VBScript让Windows系统发出声音.. 文件I Love You.VBS中的内容是: CreateObject("SAPI.SpVoice").Speak" ...

  5. Windows权限提升基础知识和命令

    介绍 这篇文章是介绍window的权限提升,虽然不是一个全面的指南,但会试图覆盖主要的技术,常用的资源列表在文章底部,可供大家参考. window权限提升基础知识 初始信息收集 在开始提权之前,我们需 ...

  6. linux(十)之初始化文件

    前面写了很多linux的知识,其实很多都是命令的,所以要去多多的练习才能学的更好,加油为了好工作. 要么现在懒惰,未来讨饭.要么现在努力,未来惬意. 一.初始化文件概述 1.1.概述 系统初始化文件是 ...

  7. php 自己封装的一些函数

    手机归属地函数 function get_mobile_area($phone){ $sms = array('province'=>'', 'supplier'=>''); //初始化变 ...

  8. jenkins 配置qq邮箱

  9. Keil提示premature end of file错误 无法生成HEX文件

    今天舍友在使用Keil UV4的时候遇到一个问题:Keil提示premature end of file,无法生成hex文件. 代码是没有错误的.那么问题就出在设置上面了. 百度了一圈,发现很少人解答 ...

  10. Spring 事务管理笔记

    本文为 Spring 框架的事务管理学习笔记,官网文档地址为:Transaction Management,隔离级别及传播属性解释来自 org.springframework.transaction. ...