ProcessExplorer原理分析之句柄处理 by sucsor/RCT
1,如何获得各进程的句柄
  使用NtQuerySystemInformation函数的SystemHandleInformation=16号功能.
  其相关结构定义如下:
  typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO{
      USHORT UniqueProcessId;
      USHORT CreatorBackTraceIndex;
      UCHAR ObjectTypeIndex;
      UCHAR HandleAttributes;
      USHORT HandleValue;
      PVOID Object;
      ULONG GrantedAccess;
  } SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO;

typedef struct _SYSTEM_HANDLE_INFORMATION{
      ULONG NumberOfHandles;
      SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1];
  } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
  该功能号获取系统内所有进程的句柄放在Handles里,个数由NumberOfHandles标识,
  每个句柄由UniqueProcessId来区分属于那个不同的进程.
2,如何得到句柄的信息
  首先ProcessExploer 要打开该进程(OpenProcess),然后根据使用DuplicateHandle,将目标进程的句柄和要关闭的句柄(这不是唯一的办法,不过PE是这样做的)
  做为参加传入,得到该句柄执行体对象的在本进程内的句柄,然后通过DeviceIoControl将该句柄传到ProcessExploer的驱动中,
  通过使用PsLookupProcessByProcessId得到进程有内核对象,然后使用KeAttachProcess函数切换到进程的上下文中,
  再通过使用ObReferenceObjectByHandle得到对象,再通过ObQueryNameString得到对象的名称信息,根据对象的结构,还可以得到其他的相关信息,
  比如打开的句柄数和引用计数及一些访问控制信息.
  
3,如何关闭某进程中的句柄
  如同二中提到的通过一系统的函数可以切换到进程的上下文,在该进程上下文中,即可调用ZwClose来关闭本进程的句柄,需要的参数只是句柄,
  这个句柄在第一步中已经得到.
  
4,ObQueryNameString并不是对于所有的对象都能得到名称,对于文件对象的名称可能需要进一步使用文件系统提供的相关函数来获取名称信息.

5,有误之外请各位指正,谢谢.
ProcessExplorer逆向中,不过总体来说只要代码思路有了,相信大家一看便知.
如果可能的话,会将代码按部分贴出来.只是可能....:)

转自“看雪论坛”--NtQuerySystemInformation相关推荐

  1. python爬取看雪论坛的所有主题帖的回复消息

    最近因为实验课题的需要,我们对看雪论坛的消息回复进行爬取, https://bbs.pediy.com/(看雪论坛) 对于看雪论坛的消息回复查看的一般顺序为: 进入看雪论坛的主页----->选择 ...

  2. 看雪论坛精华8正式发布

    首先祝贺看雪学院建站七周年! 感谢那些关心和支持看雪论坛发展的朋友们!每到论坛最困难的时候,是他们伸出援助之手才让论坛度过一个个的难关走到今天! 看雪论坛是大家交流加解密技术的一个场所,主要研究软件加 ...

  3. 《看雪论坛精华11》正式发布

    <看雪论坛精华11>正式发布,点击下载. 制作说明 1. 本论坛精华手册收集了看雪软件安全论坛 2010.1.1 - 2010.12.31 期间的精华内容,共八百余篇文章. 2. 本精华手 ...

  4. 看雪论坛,上次访问时间

    上次访问看雪论坛的时间!

  5. 堆溢出-House of orange 学习笔记(看雪论坛)

    https://www.jianshu.com/p/4b0a73f321f9 前几天把House of orange重新学习了一下,比照着glibc malloc的源码好好分析了一下,希望做到真正做到 ...

  6. 产业互联网时代的到来(内容摘自看雪论坛)

            产业互联网日益成为众多行业实现转型,获得发展新动能的趋势性选择,政务.金融.医疗.出行.教育.零售.工业等垂直领域,正在全面拥抱产业互联网.网络安全 作为互联网的基础保障,在产业互联网 ...

  7. 看雪论坛做测试题得30Kx(附答案)

    引用 看雪论坛做测试题得30Kx(附答案) 看雪邀请码价格是100kx,不够测试回答问题的话就有30KX了,自己答题通过,提供给大家,希望大家能多多熟悉版规哦! 这种做题奖励让会员了解版规又有论坛币收 ...

  8. 看雪论坛ios反编译网址记录

    想要研究ios逆向工程的,可以多参考看雪论坛的帖子,高手无限... http://www.kanxue.com/bbs/showthread.php?t=174525  逆向iOS SDK -- &q ...

  9. 看雪论坛 第一届软件设计大赛

    看雪论坛  华章公司 第一届软件设计大赛  活动目标 (1)作为<Windows编程循序渐进>一书的宣传活动. (2)加强论坛整体的编程氛围,为论坛的精英提供展示自我实力的机会. (3)激 ...

最新文章

  1. 如何用python画出中国地图-用Python画一个中国地图
  2. Java Stream流的概念
  3. Web集成工具Thinfinity® VirtualUI™ v2.0发布丨附下载
  4. helm部署kafka完整记录
  5. python爬虫 爬取bilibili新番榜
  6. 微信模版消息 errmsg: 'invalid weapp pagepath hint: [OtU1OA0868a394]
  7. 世界手机号码格式_世界上手机号码最长的国家是中国,最短的是哪个国家?
  8. 数学 —— 其他 —— 快速求逆平方根
  9. day08面向对象+
  10. Git管理多个远程分支
  11. c语言词法分析器的实验报告,C语言词法分析器构造实验报告
  12. cherry 键盘失灵记录
  13. Mac安装原版Windows7无法验证AppleSSD.sys文件数字签名解决办法
  14. android AndroidManifest.xml 属性详细解析
  15. 字节跳动 5 万人远程办公的背后,飞书的演进之路
  16. 魅族,一家被节操羁绊着的公司
  17. Python爬取雪球7*24小时信息
  18. mysql如何插入图片和视频_mysql中怎样插入图片
  19. C语言编写万年历,解决1582年历史问题
  20. 运筹学——运输问题数学模型

热门文章

  1. 【EXCEL】批量处理科学技术法的列为文本的函数
  2. c语言-输出倒三角图案
  3. 基金指数温度怎么算_基金跌了点是怎么算的 怎么看指数基金温度
  4. ESP32 ARDUINO RS485 DE/RE#流向控制编程
  5. 新概念英语第一册 (1)
  6. python中divmod函数是什么意思_python中divmod是什么
  7. 数据结构-树 速通指南
  8. centos创建文件服务器,创建一个centos云服务器
  9. caj怎么批量免费转换成word
  10. 求所有的七位完全平方数,且这7个数位上的数字各不相同