【note】进程结束内幕
下午抽空看了PspTerminateProcess NTerminateProcess的实现。。。也更加理解了进程是个容器。。。线程是执行体的概念。。。。
note下流程:
在内部的调用流程 :
psPTerninateProcess
1. 通过Eprocess得到 Ethread的列表 。。
2. 通过循环依次结束每个线程。。。调用PspTerminateThreadByPointer 。。。
3. 在PspTerminateThreadByPointer内部。。判断如果是当前线程 。。则调用PspExitThread 结束 。。否则。。便向该线程中插入一个PspExitApc, 然后强制
唤醒该线程。。。。去执行PspExitThread, 让线程自杀。。。。(如果是系统线程 。。则拒绝访问)
4. 如果结束的是进程的最后一个线程。。。则销毁进程的虚拟地址空间。。。debugport exceptport。。。。然后从进程链表中删除 。。。。
所以。。一般DKOM伎俩也就是从上面的步骤中寻找突破口 。。然后保护进程。。
看了下大米的Dkom。。。被一个法国人A了。。。主要是通过3和4 完成的 。。
再看mj的。。。。更邪恶。。。 做了一个回调函数。。。。 想法是挺好的。。。
去年看 炉子。。大米。。。他们的文章 和看天书似的。。。。现在已经能看懂大部分了。。。。我已经进步了 O(∩_∩)O哈哈~
新书 。。。windows内核情景分析 。。。140¥ 。。。。 老毛子 。。。。真狠。。。
=============================================================
ps:只看一个东西的原理真不过瘾。。。。真正看到实现了。。。所有的东西也就明白了。。。 技术就是一层窗户纸啊。。。。。。
stl如此。。。windows的os也是如此。。。。。
想端午节回家。。。。。。。。。