摘要: 百度上比较好的解释是:SSDT的全称是System Services Descriptor Table,系统服务描述符表。这个表就是一个把ring3的Win32 API和ring0的内核API联系起来。SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服... 阅读全文
posted @ 2013-09-25 14:51 毛毛虫的薄刻 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 简介 有时在开发中,会遇到这样一种情况,当非常需要对某些内核函数进行挂钩时,而常规基于PE的挂钩,往往达不到目的。在本文中将要探讨的,是怎样直接挂钩内核函数,另外,在示例中,还要演示在系统中显示为一个基本磁盘的可移动USB存储设备,并在其上创建及管理多个分区(因为这样或那样的原因,Windows既不... 阅读全文
posted @ 2013-09-25 14:50 毛毛虫的薄刻 阅读(150) 评论(0) 推荐(0) 编辑
摘要: Q 在NT/2000/XP中,如何读取CMOS数据? Q 在NT/2000/XP中,如何控制speaker发声? Q 在NT/2000/XP中,如何直接访问物理端口? A 看似小小问题,难倒多少好汉!NT/2000/XP从安全性、可靠性、稳定性上考虑,应用程序和操作系统是分开的,操作系统代码运行在核... 阅读全文
posted @ 2013-09-25 14:49 毛毛虫的薄刻 阅读(183) 评论(0) 推荐(0) 编辑
摘要: Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY或IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有什么办法呀?A 确实,用你所说的I/O控制码,只能得到最基本的磁盘参数。获取磁盘出厂信息的I/O控制... 阅读全文
posted @ 2013-09-25 14:48 毛毛虫的薄刻 阅读(219) 评论(0) 推荐(0) 编辑
摘要: Q 前几次我们讨论的都是设备名比较清楚的情况,有了设备名(路径),就可以直接调用CreateFile打开设备,进行它所支持的I/O操作了。如果事先并不能确切知道设备名,如何去访问设备呢?A 访问设备必须用设备句柄,而得到设备句柄必须知道设备路径,这个套路以你我之力是改变不了的。每个设备都有它所属类型... 阅读全文
posted @ 2013-09-25 14:48 毛毛虫的薄刻 阅读(198) 评论(0) 推荐(0) 编辑
摘要: Q DOS命令DISKCOPY给我很深的印象,现在也有许多“克隆”软件,可以对磁盘进行全盘复制。我想,要制作磁盘镜像文件,DeviceIoControl应该很有用武之地吧?A 是的。这里举一个制作软盘镜像文件,功能类似于“DISKCOPY”的例子。本例实现其功能的核心代码如下: // 打开磁盘HAN... 阅读全文
posted @ 2013-09-25 14:47 毛毛虫的薄刻 阅读(144) 评论(0) 推荐(0) 编辑
摘要: Q 在MSDN的那个demo中,将设备名换成“A:”取A盘参数,先用资源管理器读一下盘,再运行这个程序可以成功,但换一张盘后就失败;换成“CDROM0”取CDROM参数,无论如何都不行。这个问题如何解决呢?A 取软盘参数是从软盘上读取格式化后的信息,也就是必须执行读操作,这一点与硬盘不同。将Crea... 阅读全文
posted @ 2013-09-25 14:46 毛毛虫的薄刻 阅读(149) 评论(0) 推荐(0) 编辑
摘要: Q 在NT/2000/XP中,我想用VC编写应用程序访问硬件设备,如获取磁盘参数、读写绝对扇区数据、测试光驱实际速度等,该从哪里入手呢? A 在NT/2000/XP中,应用程序可以通过API函数DeviceIoControl来实现对设备的访问—获取信息,发送命令,交换数据等。利用该接口函数向指定的设... 阅读全文
posted @ 2013-09-25 14:45 毛毛虫的薄刻 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 本文分三部分来介绍如何构造一个简单的USB过滤驱动程序,包括“基本原理”、“程序的实现”、“使用INF安装”。此文的目的在于希望读者了解基本原理后,可以使用除DDK以外最流行也最方便的驱动开发工具DriverStudio来实现一个自己的过滤驱动,并正确地安装。一、基本原理我们知道,WDM(和KDM)... 阅读全文
posted @ 2013-09-25 14:45 毛毛虫的薄刻 阅读(551) 评论(0) 推荐(0) 编辑
摘要: 呵呵,搞点突兀的标题而已。其实说的还是如何使用WinDBG和VMware来搭建调试内核的环境而已,这些网上已经有数不清的教程了,不过我喜欢自己亲手写一下。第一,把这个过程写一遍能加深印象,就算以后忘记了也可以有笔记查找,快速想起来。第二、网上的教程很多都是互相抄来抄去,连错误也抄过去了。很典型一个错... 阅读全文
posted @ 2013-09-25 14:43 毛毛虫的薄刻 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 首先你要配置好测试环境:参考VMware+Windgb+Win7 内核驱动调试在你的主机上配置Symbols配置sympath,C:\Users\Admin\Desktop\first\objchk_win7_x86\i386是你编译好的sys目录: SRV*C:\Symbols*http://ms... 阅读全文
posted @ 2013-09-25 14:43 毛毛虫的薄刻 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 参考FileSpy写的文件监控程序,但比它的抽象多了。可能瑞星的文件驱动也是这样写的,否则它为什么老阻止我安装驱动呢。测试程序是一个命令行小程序,负责打开设备,开启监控和关闭监控,运行时开启和关闭两次。在DebugView中查看输出信息,我只是想看看能不能达到目的,所以信息量很少。在驱动程序中开启和... 阅读全文
posted @ 2013-09-25 14:41 毛毛虫的薄刻 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 摘要: 我想做一个unlocker一样的程序,不管这个文件有没有被使用,先实现删除它。在查资料过程中,就知道了如果不访问磁盘扇区的话,除非写驱动才能做到。奈何时间有限,工作匆忙,一直没有完成。而且忽视了更简便的方法——在别的路径下把修改后的OCX控件重新注册一下就可以了。 这些都不要说了,这段... 阅读全文
posted @ 2013-09-25 14:40 毛毛虫的薄刻 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 理解Windows NT驱动程序最重要的概念之一就是驱动程序运行时所处的“执行上下文”。理解并小心地应用这个概念可以帮助你构建更快、更高效的驱动程序。NT标准内核模式驱动程序编程的一个重要观念是某个特定的驱动程序函数执行时所处的“上下文”。传统上文件系统开发者最关注这个问题,但所有类型的NT内核模式... 阅读全文
posted @ 2013-09-25 14:39 毛毛虫的薄刻 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 下面是开发人员在使用 Windows NT 设备驱动程序时应当避免的事项列表: 1. 一定不要在没有标注 I/O 请求数据包 (IRP) 挂起 (IoMarkIrpPending) 的情况下通过调度例程返回 STATUS_PENDING。2. 一定不要通过中断服务例程 (ISR) 调用 KeSync... 阅读全文
posted @ 2013-09-25 14:38 毛毛虫的薄刻 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 在不同的场合,很多驱动编写人员需要在驱动和用户程序间共享内存。两种最容易的技术是:l 应用程序发送IOCTL给驱动程序,提供一个指向内存的指针,之后驱动程序和应用程序就可以共享内存。(应用程序分配共享内存)l 由驱动程序分配内存页,并映射这些内存页到指定用户模式进程的地址空间,并且将地址返回给应用程... 阅读全文
posted @ 2013-09-25 14:37 毛毛虫的薄刻 阅读(229) 评论(0) 推荐(0) 编辑