标签归档:Drivers

BindView 可查看网络过滤驱动的工具

BindView 是微软提供的一个可以查看网络过滤驱动的小工具,并且是有源码可以学习改造的,该工具的源码地址在微软的 github 帐号下就可以找到:https://github.com/Microsoft/Windows-driver-samples/tree/master/network/config/bindview,编译运行后可以看到如下效果:

继续阅读

CmRegisterCallbackEx 函数功能详解

Windows 内核开发市面上流传的教程基本上都在写 CmRegisterCallback 函数的功能,而 CmRegisterCallbackEx 几乎没有(本人没有见到有描述比较清晰的)。看任何人写的教程都不如看一眼 MSDNExample,跟着微软的例子我详细记录一下这个函数的每个参数,希望可以帮到后面要使用该函数的人,如果大家看到有什么不对的地方请指证,以免我误导他人。

继续阅读

内核事件 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 提供了很多操作这种字符串的函数。见如下示例:

继续阅读