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

Continue reading

前段时间一直在学习内核监控进程创建的知识,虽然成功监视,但一直在内核输出到 DebugView 中,不能通知我们的应用程序来显示指定内容,无论如何也不方便,所以赶在周末参考了 Windows 内核安全与驱动开发 中第五章 “应用与内核通讯” 制作了以下程序。程序主要使用了内核事件 KEVENT 实现同步,更多请参考 Windows 内核安全与驱动开发,程序运行后的效果如下:

Continue reading

前段时间借助开源项目 EasyHook 制作了一个在应用层下的监控进程创建的工具。但应用层实现有一些限制,比如 Hook 时风险较高、能取到的信息有限、XP 和 Win7 需要 Hook 不同的函数等。这些问题最终让我向内核研究,希望可以通过一份代码,编译出适应不同系统的驱动程序实现我们的需求,所以就有了本文的内容,我们先来看一下效果图。

Continue reading

在 Windows 内核开发中,字符串并非像 C 中使用的是一个 \0 结尾的字符数组,取而代之的是一个结构体,该结构体储存了指向字符的指针和字符的长度。因为没有了 \0,很多 C 语言库函数也无法使用了,但不用担心,Windows 提供了很多操作这种字符串的函数。见如下示例:

Continue reading