lavenders
驱动牛犊
驱动牛犊
  • 注册日期2005-08-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分495分
  • 威望54点
  • 贡献值0点
  • 好评度43点
  • 原创分0分
  • 专家分0分
阅读:1817回复:5

sfilter驱动应该如何加载

楼主#
更多 发布于:2007-04-27 06:52
我编译了tooflat的sfilter加密驱动,
使用ifs kit中的sfilter.inf和sfilterinstall.cmd进行安装,注册表中的service已经注册了,
但读写文件时debugview中没有输出,文件也没有加密,我注意到注册表中service的start属性是0,是不是这有问题?前面的帖子里没说还需要其它的配置啊?
第一次接触ifs,问题很初级,谢谢!
lavenders
驱动牛犊
驱动牛犊
  • 注册日期2005-08-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分495分
  • 威望54点
  • 贡献值0点
  • 好评度43点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-04-27 14:12
问题是不是太简单了,补充一点,我的xefs.dat里设置的是e:\test*,
那么读写e:\test1.txt应该加密的。
xx_qiang
驱动小牛
驱动小牛
  • 注册日期2004-07-30
  • 最后登录2017-02-27
  • 粉丝2
  • 关注1
  • 积分31分
  • 威望249点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-04-27 16:19
SC_HANDLE schService,SchSCManager;
    DWORD Error;
    TCHAR DriverPath[256];
    TCHAR *DriverName = "yourdriver";

    SchSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
    schService = OpenService(SchSCManager,DriverName,SERVICE_ALL_ACCESS);
    if(schService == NULL)
    {
        LPCTSTR lpszBinaryPathName = "\%SystemRoot\%\\system32\\drivers\\SysclPro.sys";
        LPTSTR lpszSystemInfo;
        TCHAR tchBuffer[256];
        memset(tchBuffer,0,256);
        lpszSystemInfo = tchBuffer;

        memset(DriverPath,0,sizeof(DriverPath));

        if(! GetSystemDirectory(lpszSystemInfo, MAX_PATH+1) )
        {
            MessageBox("get system directory error!!","error",0);
            return;
        }

        strcat(DriverPath,tchBuffer);
        strcat(DriverPath,_T("\\Drivers\\"));
        strcat(DriverPath,DriverName);
        strcat(DriverPath,_T(".sys"));

        schService = CreateService(SchSCManager,DriverName,DriverName,SERVICE_ALL_ACCESS,SERVICE_KERNEL_DRIVER,
            SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL,
            //                                  "C:\\WINNT\\system32\\drivers\\temp.sys",
            lpszBinaryPathName,    
            //                                  "filter",
            NULL,
            NULL,NULL,NULL,NULL);
        if(schService == NULL)
        {
            Error = GetLastError();
            return ;
        }
    }
    if(!StartService(schService,0,NULL))
    {
        Error = GetLastError();
        CloseServiceHandle(schService);
        CloseServiceHandle(SchSCManager);
        //
        return ;
    }
    if(schService != NULL)
    {
        CloseServiceHandle(schService);
    }
    CloseServiceHandle(SchSCManager);
    return ;
用这个函数加载,先确定程序是否加载成功,成功了再看设置
xx_qiang
驱动小牛
驱动小牛
  • 注册日期2004-07-30
  • 最后登录2017-02-27
  • 粉丝2
  • 关注1
  • 积分31分
  • 威望249点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2007-04-27 16:22
用inf加载是方便,但是不太直观,用函数加载比较好一些。然后通过si很容易就找到问题所在了。。。。。。。。。。。。。。。。。
liyunch
驱动小牛
驱动小牛
  • 注册日期2001-06-28
  • 最后登录2014-09-05
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望134点
  • 贡献值0点
  • 好评度94点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-04-28 15:30
这里的人怎么老回避问题?其实就是SfDebug变量改一下值就可以从DebugView里看到调试信息了.
lavenders
驱动牛犊
驱动牛犊
  • 注册日期2005-08-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分495分
  • 威望54点
  • 贡献值0点
  • 好评度43点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-04-29 12:58
问题找到了,加载应该是对的,不过代码里默认只对G盘进行处理,就是DEBUG_VOLUME的定义。
我改成'E'就可以看到输出了。
不过后来的问题更严重,出现几次SfPostCreateWorker的调试信息后,机器就黑屏重启了,
我在xefs.dat里定义的是e:\test*,并没有对这样的文件进行操作,应该是还没有加密/解密,
为什么就出现了这么严重的错误?
前面有些文章说和系统重入有关,我现在装的是symantec antivirus,是不是冲突?
游客

返回顶部