-
-
[求助]关于驱动的符号连接
-
发表于:
2010-8-28 23:39
8931
-
XP系统下,遇到的问题,虚拟出一个盘J:,在里面有个驱动,不能成功加载,经测试发现的现象。
符号连接1:
(1)在DriverEntry中使用IoCreateSymbolicLink创建的符号连接
(2)内核进程向驱动发送IRP,驱动在派遣函数中使用IoCreateSymbolicLink创建的符号连接
符号连接2:
(1)使用DefineDosDevice创建的符号连接
(2)用户进程向驱动发送IRP,驱动在派遣函数中使用IoCreateSymbolicLink创建的符号连接
这两种符号连接的区别是,符号连接1可以使用winobj.exe在Global中看到。所以,当使用第1种方式时,J:盘的驱动可以正常加载,因为加载驱动的内核函数可以解析J:。
而第二种情况,虽然在用户下CreateFile使用J:可以,但是加载J:的驱动时就会出问题。winobj.exe也看不到。(系统映射的远程盘也会出现这种情况。)
这两种符号连接好像可以同时创建成功。
由于我现在要将参数传给虚拟盘,然后创建符号连接,这样就成了第2种情况,就出现了驱动加载失败的问题。怎么解决呢?
我看TrueCrypt就解决了这个问题,它就是从用户进程把盘符传给驱动来加载。我编译它的驱动代码没通过,自己把函数复制出来写了一个简单的驱动居然不行。
求高手指点。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)