进程&线程
柠檬的泪是酸的@
能让自己登高的,永远不是别人的肩膀
展开
-
10 DPC
DPC是什么?它的英文全称为Deferred Procedure Call,即延迟过程调用。它最初作用是设计为中断服务程序的一部分,用来解决中断服务处理时间过长的问题。因为每次触发中断,都会关中断,然后执行中断服务例程。由于关中断了,所以中断服务例程必须短小精悍,不能消耗过多时间,否则会导致系统丢失大量其他中断。但是有的中断,其中断服务例程要做的事情本来就很多,那怎么办?于是,可以在中断服务例程中先执行最紧迫的那部分工作,然后把剩余的相对来说不那么重要的工作移入到DPC函数中去执行。原创 2023-05-10 11:15:49 · 86 阅读 · 0 评论 -
09 进程挂靠
ApcState这个结构体的Process成员就是存储的进程挂靠上的进程CR3。可以打一个比方,EPROCESS的DirectoryTableBase存储的是亲父母,而ApcState存储的是养父母,我想要资源时从养父母来拿。正常情况下,CR3的值是由养父母提供的,但CR3的值也可以改成和当前线程毫不相干的其他进程的DirectoryTableBase。进程为线程提供资源,也就是提供Cr3的值,Cr3中存储的是页目录表基址,Cr3确定了,线程能访问的内存也就确定了。原创 2023-05-10 10:53:14 · 57 阅读 · 0 评论 -
08 分析KiSwapThread、KiSwapContext、SwapContext(没有分析完....)
【代码】08 分析KiSwapThread、KiSwapContext、SwapContext(没有分析完....)原创 2023-05-10 10:35:06 · 189 阅读 · 0 评论 -
07 线程切换
但在实际的使用中我们发现,当我们在3环查看不同线程的FS寄存器时,FS的段选择子都是相同的,那是如何实现通过一个FS寄存器指向多个TEB呢?调度链表有32个,每次都从头开始查找效率太低,所以Windows都过一个DWORD类型变量的变量来记录,正好是32位,一个位代表一个链表,当向调度链表.中挂入或者摘除某个线程时,会判断当前级别的链表是否为空,为空将.变量对应位置0,否则置1,这个变量就是==_kiReadySummary==。其中,时钟中断也是一种中断,中断号0x30。原创 2023-05-10 09:28:25 · 223 阅读 · 0 评论 -
06 模拟线程切换
代码的注解都写好叻,顺序认真看自然会明白的。原创 2023-05-09 16:59:43 · 95 阅读 · 0 评论 -
05 等待链表和调度链表
程序可以正常运行,原因是CPU执行与调度是基于线程的,进程断链只是影响一些遍历系统进程的API,并不会影响程序执行:断链后在Windbg或者OD中无法看到被断掉的线程,但并不影响其执行,原因是CPU调度线程的时候压根不用这个链表** 线程有3种状态:就绪(ready)、等待(wait)、运行(running)**运行的线程 : 存储在KPCR中就绪和等待的线程 : 33个链表中(一个等待链表,32个就绪链表)原创 2023-05-09 13:22:39 · 148 阅读 · 0 评论 -
04 判断线程是否为GUI线程
Window XP中打开一个DebugView应用程序,使用WinDbg查看它的进程和线程的情况。接下来我们查看这两个线程。原创 2023-05-09 10:11:49 · 98 阅读 · 0 评论 -
03 使用DebugPort 清零实现反调试
驱动代码#include <ntifs.h>#include <wdm.h>#include <ntddk.h>//操作码:0x0-0x7FF 被保留,0x800-0xFFF 可用#define HIDE CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS)#define SHOW CTL_CODE(FILE_DEVICE_UNKNOWN,0x801,METHOD_BUFFE原创 2023-05-09 09:28:24 · 277 阅读 · 0 评论 -
02 进程断链、线程断链
进程断链驱动代码#include <ntifs.h>#include <wdm.h>#include <ntddk.h>//操作码:0x0-0x7FF 被保留,0x800-0xFFF 可用#define HIDE CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS)//设备对象PDEVICE_OBJECT devObj;//符号链接UNICODE_STRING s原创 2023-05-08 17:24:33 · 367 阅读 · 0 评论 -
01 EPROCESS、ETHREAD、KPCR结构
每个windows进程在0环都有一个对应的结构体:EPROCESS,这个结构体包含了进程所有重要的信息。原创 2023-05-08 09:53:07 · 365 阅读 · 0 评论