windows驱动开发
Windows驱动开发的相关笔记
有理想的懒羊羊
这个作者很懒,什么都没留下…
展开
-
驱动签名:Error information: “SignerTimeStamp() failed.“ (-2147012865/0x80072eff)
此时需要更换一下网址http://timestamp.digicert.com/scripts/timestamp.dll原创 2021-01-31 22:06:40 · 895 阅读 · 2 评论 -
windbg 双机调试连接不上
VMware 的虚拟机设置里面,如果要使用串口2,也就是com2,那么必须给把打印机给加上,否则就算设置了com2,其实使用的是com1.曾经看软件调试的时候,书上需要使用串口1,所以我把打印机给删了,但是后来再想使用com2的时候,就必须给把打印机给重新加进来,否则其实是com1....原创 2021-01-31 21:02:11 · 799 阅读 · 0 评论 -
_LIST_ENTRY 中的flink和blink
这里的flink和blink要注意一下,flink指的是下一个,blink指的是前一个。和一开始想的方向是反着的。原创 2021-01-25 18:07:30 · 663 阅读 · 0 评论 -
Windows驱动c++重载new delete
先上代码,由于比较容易理解,后期再补讲解#include<ntddk.h>#pragma warning (disable: 4996)void* __cdecl operator new(size_t size){ KdPrint(("进入全局的new\n")); return ExAllocatePool(PagedPool, size);}void* __cdecl operator new[](size_t size){ KdPrint(("进入全局的new\n原创 2021-01-15 22:27:04 · 308 阅读 · 1 评论 -
win10 64位 让操作系统能够使用测试驱动签名
win10 没法F8禁止驱动签名。就给管理员打开控制台 输入 /set testsigning on让操作系统进入测试模式然后重启原创 2021-01-14 20:27:03 · 788 阅读 · 0 评论 -
Windows API前缀对应的意思
前缀意思Cc缓存管理器Cm注册表Dbg调试Ex执行体函数Halhal提供的接口函数IoI/O管理器Ke内核函数Lpc本地过程调用Mm内存管理器原创 2020-08-29 20:09:24 · 365 阅读 · 0 评论 -
VS2019+WDK10编写xp平台的驱动
VS2019+WDK10编写xp平台的驱动之前自己在网上找了一堆教程,各种配置一大堆都没有成功,但是都没成功。如何配置直接贴张图,其实非常非常简单。原创 2020-08-16 16:45:53 · 1063 阅读 · 1 评论 -
Windows注册表解析
https://www.cnblogs.com/wfq9330/p/9176654.html转载 2020-08-10 17:36:45 · 229 阅读 · 0 评论 -
FDO和PDO的区别
PDO:physical device object (PDO)A device object created by a bus driver using IoCreateDevice. The PDO, which represents the device for the bus driver, is at the bottom of the device stack for a device.FDO:Functional device object. A device object creat原创 2020-08-09 21:46:52 · 2306 阅读 · 0 评论 -
IoSkipCurrentIrpStackLocation与IoCopyCurrentIrpStackLocationToNext区别
IoSkipCurrentIrpStackLocation与IoCopyCurrentIrpStackLocationToNext函数都是将系统的IO_STACK_LOCATION 数组指针向下移动一次,以实现将当前IRP转发给更低一层驱动,那么这两个函数有什么区别呢?IoSkipCurrentIrpStackLocation只是将IRP简单的转发给更低一层的驱动,至于结果怎么样就不得而知了。有的时候我们希望得到IRP转发后的状态:比如异步IRP,我们希望当IRP完成后将异步IRP计数器减一,这时候就需转载 2020-08-07 21:04:44 · 283 阅读 · 0 评论 -
Windows内核编程(三) 基础概念
基础概念上下文环境:一名合格的驱动开发者需要时时刻刻知道当前驱动所处的上下文环境,因为内核是共享的,稍不留神直接蓝屏。驱动入口函数和驱动卸载函数都隶属于进程pid为4的SYSTEM系统进程。其代表的是系统内核。一般来说,内核代码都运行在SYSTEM进程空间中,但是驱动对象的派遣例程一般在发起请求的进程中。中断请求级别(IRQL):高中断请求级别可以中断低中断请求级别的执行。下面进行举例:PASSIVE_LEVEL: 0 应用层线程以及大部分内核函数都处于该级别,可以无限制使用所有的内核API,可原创 2020-08-01 20:24:14 · 507 阅读 · 0 评论 -
sc start 驱动报错1275 此驱动程序被阻止加载
驱动报错1275给出两个思路,一个是禁用驱动的强制签名策略,这个具体的步骤就不说了。再一个就是编译的方式错了,比如我的目标系统是64位的,我编译了一个32位的驱动放上去是不行的。这个不像是普通的应用程序一样可以兼容,因为你驱动直接进的内核里面运行,而内核实际上就是64位的,普通应用程序转换数据类型是在进入内核大门之前就转换完了。...原创 2020-07-31 21:52:16 · 4831 阅读 · 0 评论 -
实体机ping不通虚拟机
首先虚拟机能够让实体机ping通,那么就把虚拟机的所有防火墙都关了就行了。之后我出现了实体机ping不通虚拟机的情况,然后上网查了查发现只要打开实体机的vm8的一个网卡就行了。把bai你的虚拟机打开,启动系统成du功后,在虚拟zhi机属性设置里,修改dao网络连接为NAT格式,然后在物理机也就是你的宿主机里找到网络连接,启用VM8网卡,然后禁用其他的VM网卡(我机器里就还有个VM2网卡),设置其为自动获取IP,然后回到虚拟机中的系统中,设置其IP为自动获取!顺便在虚拟机系统中用IPconfig -al原创 2020-07-31 21:14:59 · 919 阅读 · 0 评论 -
Windows内核编程(一)第一个驱动的编写,以及生成
内核编程内核入口函数NTSTATUS DriverEntry( PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath )第一个参数表示驱动对象指针:驱动运行后,OS在内存中为其分配了一个DRIVER_OBJECT的数据结构,里面记录这个驱动的一些信息。第二个参数表表示当前驱动所对应的注册表的位置typedef struct _UNICODE_STRING{ USHORT Lenghl; USHORT MaximumLengt原创 2020-07-30 19:34:17 · 546 阅读 · 0 评论 -
Windows内核编程(二)内核驱动运行,调试
内核驱动运行、调试驱动的运行由于Windows数字签名的原因,没有签名或者使用测试签名的都不能放到64位系统上运行。两个解决办法。一、将系统设置为调试模式二、关闭系统的驱动签名校验。服务的基本操作服务管理器:管理系统上的所有服务,创建、注册、修改、启动服务。所以我们编写程序的时候,首先要打开服务管理器。其API为:SC_HANDLE WINAPI OpenSCManager( LPCTSTR lpMachineName, //字符串常量,表示机器名字,传NULL就是本机器 LPCTST原创 2020-07-30 22:16:33 · 717 阅读 · 0 评论