Windows驱动
fish小余儿
C/C++程序员
展开
-
005-浅谈SSDT
1.认识SSDT在Windows系统内核层它有两张表,分别ssdt(System Services Descriptor Table,系统服务描述符表)和shadow ssdt。ssdt主要是我们常用的系统服务,shadow ssdt主要是界面和图形显示相关的系统服务。当我们用户层调用一个Win32 API的时候,其实应用层的代码没有做什么操作,应用层只是做了一些对于用户传递过来API参数的判...原创 2019-11-17 00:14:29 · 1184 阅读 · 0 评论 -
004-实现过滤PCHunter驱动中的例程
1.理解过滤的概念关于过滤,我们可以举一个现实中的例子。比如一条河流中水的流向由东向西,但是呢我们想要去掉水中的杂物,又要不影响水的流向,这时我们可以在东西中间插入一张过滤网,这样就可以实现我们的目的了。这次我们用过滤PCHunter32as.sys中的例程其实就是这个思想。还有一个我们也要明白,我们为什么能够替换其他其他驱动程序的例程呢,因为IO管理器实现了通用的框架,每个驱动程序的参数,返...原创 2019-11-13 22:02:07 · 734 阅读 · 0 评论 -
003-Windows驱动之应用层与内核层通信
我们在进行Win32开发的时候,肯定都接触过Windows的消息机制,消息会被封装成一个结构体:MSG。我们做驱动开发的时候,消息被封装成了另外一个结构体,也就是IRP(I/O Request Package)。这样通过IRP对象能够处理我们来自应用层的请求。我们用Windbg工具查看一下IRP结构体:kd> dt _IRPnt!_IRP +0x000 Type ...原创 2019-11-11 22:40:04 · 1385 阅读 · 0 评论 -
002-编写第一个Windows驱动程序
首先要明确我们编写的是NT驱动,也就是内核扩展程序,因此要包含ntddk.h。如果我们要WDM或者WDF驱动,那么则要在代码中包含特定的头文件了。下面我贴出一个简单的HelloWorld程序,此程序虽小,可是五脏俱全呢。#include <ntddk.h>VOID UnloadDriver(PDRIVER_OBJECT pDriver){ KdPrint(("UnloadD...原创 2019-11-08 19:48:31 · 1119 阅读 · 0 评论 -
001-Windows驱动编程基础知识
我们在进行Windows驱动编写之前,有必要先了解一些基础知识,为我们日后进行Windows驱动开发打下良好的基础。1.Windows系统结构体Windows是分层设计的操作系统,可以先从宏观上大致了解一下。其实这样呢我们只要明白一件事,那就是什么用户态,什么是内核态。用户态: 只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取。内核态: ...原创 2019-07-27 12:08:46 · 1523 阅读 · 0 评论