摘要: 5、在驱动中获取系统时间1)获取启动毫秒数在ring3 我们可以通过一个GetTickCount 函数来获得自系统启动开始的毫秒数,在ring0也有一个与之对应的KeQueryTickCount 函数。不幸的是,这个函数并不能直接返回毫秒数,它返回的是“滴答”数,而一个时钟“滴答”到底是多久,这在不同的系统中可能是不同的,因此我们还需要另外一个函数的... 阅读全文
posted @ 2010-10-18 22:09 浪里飞 阅读(2497) 评论(0) 推荐(0) 编辑
摘要: 4、注册表操作和文件操作类似,在操作注册表之前需要首先打开注册表,获得一个句柄,这可以通过函数ZwCreateKey 完成。与ZwCreateFile函数类似,它通过一个OBJECT_ATTRIBUTES 获得需要创建或打开的路径信息,但在内核中这个路径与用户模式下不相同,实际上,因为用户模式下的应用程序总是由某个“当前用户”打开的,因此在用户模式下可以直接访问HKEY_CLASSES_ROOT 和HKEY_CURRENT_USER,但工作在内核模式下的驱动程序不属于任何一个用户,因此不能直接访问这两个根键。如果ZwCreateKey 指定的项不存在,则会直接创建该项,同时由函数的Dispos 阅读全文
posted @ 2010-10-18 22:02 浪里飞 阅读(3943) 评论(0) 推荐(0) 编辑
摘要: 1、字符串Unicode 字符串有一个结构体定义如下:typedef struct _UNICODE_STRING {USHORT Length; // 字符串的长度(字节数)USHORT MaximumLength; // 字符串缓冲区的长度(字节数)PWSTR Buffer; // 字符串缓冲区} UNICODE_STRING, *PUNICODE_STRING;需要注意的是,当我们定义了一个... 阅读全文
posted @ 2010-10-18 21:54 浪里飞 阅读(2348) 评论(3) 推荐(0) 编辑
摘要: 3、文件读写在ring3 我们可以使用CreateFile、ReadFile 、WriteFile 等API,在ring0 同样很相似,不过函数变成了ZwCreateFile、ZwReadFile、ZwWriteFile 等内核函数。1)ZwCreateFile与ring3的CreateFile函数有所不同,它不能直接将需要打开或创建的文件路径传递过去,我们必须首先填写一个OBJECT_ATTRI... 阅读全文
posted @ 2010-10-18 21:51 浪里飞 阅读(2309) 评论(0) 推荐(0) 编辑