Win64 驱动内核编程-7.内核里操作进程

本文介绍了在Windows内核中操作进程、线程和DLL模块的方法,包括枚举进程、暂停/恢复/结束进程和线程,以及枚举/卸载DLL模块。重点讨论了枚举PspCidTable的策略,如何利用PsLookupProcessByProcessId函数进行稳定且高效的枚举,并提到了进程隐藏技术的检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在内核里操作进程

    在内核里操作进程,相信是很多对 WINDOWS 内核编程感兴趣的朋友第一个学习的知识点。但在这里,我要让大家失望了,在内核里操作进程没什么特别的,就标准方法而言,还是调用那几个和进程相关的 NATIVE API 而已(当然了,本文所说的进程操作,还包括对线程和 DLL 模块的操作)。本文包括 10 个部分:分别是:枚举进程、暂停进程、恢复进程、结束进程、枚举线程、暂停线程、恢复线程、结束线程、枚举 DLL 模块、卸载 DLL 模块。

    1.枚举进程。进程就是活动起来的程序。每一个进程在内核里,都有一个名为 EPROCESS 的巨大结构体记录它的详细信息,包括它的名字,编号(PID),出生地点(进程路径),老爹是谁(PPID 或父进程 ID)等。在 RING3 枚举进程,通常只要列出所有进程的编号即可。不过在 RING0 里,我们还要把它的身份证(EPROCESS)地址给列举出来。顺带说一句, 现实中男人最怕的事情 就是“ 喜当爹” , 这种事情在内核里更加容易发生。因为 EPROCESS  里 有 且只有 一个 成员 是记录父进程 ID  的,稍微改一下,就可以认任意进程为爹了。枚举进程的方法很多,标准方法是使用 ZwQuerySystemInformation 的 SystemProcessInformation 功能号,不过如果在内核里也这么用的话,那就真是脱了裤子放屁——多此一举。因为在内核里使用这个函数照样是得不到进程的 EPROCESS 地址,而且一旦内存出错,还会蓝屏,更加逃不过任何隐藏进程的手法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值