BindView 是微软提供的一个可以查看网络过滤驱动的小工具,并且是有源码可以学习改造的,该工具的源码地址在微软的 github 帐号下就可以找到:https://github.com/Microsoft/Windows-driver-samples/tree/master/network/config/bindview,编译运行后可以看到如下效果:
内核事件 KEVENT 实现驱动与应用层通讯
前段时间一直在学习内核监控进程创建的知识,虽然成功监视,但一直在内核输出到 DebugView 中,不能通知我们的应用程序来显示指定内容,无论如何也不方便,所以赶在周末参考了 Windows 内核安全与驱动开发
中第五章 “应用与内核通讯” 制作了以下程序。程序主要使用了内核事件 KEVENT
实现同步,更多请参考 Windows 内核安全与驱动开发
,程序运行后的效果如下:
驱动实现监控进程创建及退出(支持64-bit系统)
前段时间借助开源项目 EasyHook 制作了一个在应用层下的监控进程创建的工具。但应用层实现有一些限制,比如 Hook 时风险较高、能取到的信息有限、XP 和 Win7 需要 Hook 不同的函数等。这些问题最终让我向内核研究,希望可以通过一份代码,编译出适应不同系统的驱动程序实现我们的需求,所以就有了本文的内容,我们先来看一下效果图。
VS2015+WDK10+Win10 Win7以上系统驱动发开环境搭建
文本主要介绍 Win10 系统下安装 VS2015 及 WDK10 驱动开发环境的搭建,搭建完成后可通过 VS2015 直接新建驱动项目并编译通过后可在 Win7 以上系统运行。无需自己制作模版等繁琐步骤(其实早在 VS2013+WDK8.1 的时候就已经支持直接从 IDE 中新建项目)。以下是相关截图:
Windows 内核获取开机所用时间及当前系统时间
获取开机时间并不像应用层简单的调用一个 API 就搞定了,在内核需要 GetTickCount
获取一个滴答数,然后把这个滴答数转为毫秒,再进行运算即可得出开的时间。以下是获取开机多少分钟和当前系统时间的结果,代码在下方:
tick count = 2 minutes.
time = 2016-04-01 00:39:26
Windows 内核读写注册表
看书实现的代码,遇到了好多问题,做了详细的代码注释。另外在排查问题的过程中看到了一个操作注册表的通用的 c 文件,貌似是一个硬件驱动的 ftp 地址。ftp://ftp.lantronix.com/priv/cpr/Lantronix/4.3/4.3.0.0/Debug/DriverSource/registry.c
Windows 内核驱动字符串操作
在 Windows 内核开发中,字符串并非像 C 中使用的是一个 \0
结尾的字符数组,取而代之的是一个结构体,该结构体储存了指向字符的指针和字符的长度。因为没有了 \0
,很多 C 语言库函数也无法使用了,但不用担心,Windows 提供了很多操作这种字符串的函数。见如下示例: