minifilter开发文件过滤驱动、以及syser调试的经验。
刚刚完成一个产品的开发,用了两个月,真不容易,像我这种菜鸟,为了搞
清一个常识,得从老谭的那本古董级C程序设计翻起。
首先说驱动教程。 楚狂人谭文的《寒江独钓-Windows内核安全编程》和张
帆的《Windows驱动开发技术详解》要反复地读。
我用的是最新的WDK 7600,那个帮助真叫人汗,英文的倒罢了,怎么不
给个例子让人抄。。。
WDK的安装和配置照楚狂人的说明,调试和安装工具真的很管用。但我照着配
置WINDBG做双机调试不成功,我的机器太老跑虑拟机太慢,我宁愿每天面对三十
次蓝屏重启也不愿等虑拟机总是100%的CPU任务。
经验如下:
1、最新版的syser不太支持虑拟机(至少在我的VM上不能用)。
2、syser试用版限时7天,过时就不能调试你的.sys文件了。但是---
你将它卸载了,重启再安装再重启,还能接着用(我重装了三回)。大可不必用
破解版,这个很好的调试工具是我国高手吴岩峰开发的,如果你为公司干活,还
是要求BOSS破点血,都是coder不容易。
3、你的.sys文件编译通过后,用配置好的INF安装。
4、如果这个驱动已经安装过,请用SRVINSTW.EXE卸载后再安装
5、启动syser进行调试前,请关闭杀毒软件!!!
6、syser----loder---->lode for debuging---->browse
路径一定要选择windows/system32/drivers/your.sys
千万不要选择你编译目录下的那个,没安装的一运行会蓝屏。
7、在Source Explorer 页,双击你的.c文件,多点几下,多等一会,
你的源代码就会出现(不是完全的C了,有汇编代码),可以右键设置断点。
8、dump文件要靠得住,老母猪会上树。我用windbg分析出疑似出问题的
地址,进入SYSer调试,在那个地方设置断点,根本就不带停的---也许是我的
水平还不够。。。。
编码经验:
《寒江独钓-Windows内核安全编程》 的随书源码很好,但并不可靠。我改
那个minifilter的例子,在一字不改的情况下编译报错,等到把该加的都加了,
编译通了,一运行就蓝屏,最后我将和用户层通信的那段全删,才勉强在syser调
试状态下能转了,但直接运行还是蓝屏。
直到刚才,我把我的代码转移到微软WDK自带的minifilter例子中的
cancelsafe,问题才解决。至于问题在哪里,我也说不法楚。
关于链表,水平不够,还是不用的好,结构是个好理解的东西。
驱动正在操作(主要是写)的文件,其它程序不要同步写,会蓝!!
内核驱动要访问配置,读注册表比读文件容易。
部分变量,要在程序最开始声明,虽然书上的例子是在函数内部声明,但
实际编译是通不过的。特别是WDK6700。