xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1383回复:12

向tooflat请教一个问题

楼主#
更多 发布于:2005-04-25 14:40
我不理解你的SfRead的例程中处理解密的原理,特别是MyBuffer,我总觉的MyBuffer是申请的一个空内存块,但为什么在读完成例程中用它来解密了呢?请指教
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-26 11:12
读完成后MyBuffer就不是空的了,因为我用MyBuffer的地址替换了原Buffer的地址,下层文件系统会把数据放到MyBuffer中
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-26 11:24
这个我懂了,先给10分,可否在问个问题,也就是我下面发的帖子,我不能截获本地磁盘的读写请求呀,我发现我的SfCreate例程与你的不一样,不知是不是那个原因,你有sfilter的原代码吗,你可否发一份给我,因为我实在是找不到原因了,可以再给你30分的
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-26 11:33
dfsafd
附件名称/大小 下载次数 最后更新
2005-04-26_sfilter.c (185KB)  24
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-26 12:27
谢谢你呀,可是还是不行纳,急死了,你说的缓存问题以及启动方式为0是什么意思呀
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-26 15:56
谢谢你呀,可是还是不行纳,急死了,你说的缓存问题以及启动方式为0是什么意思呀


就是说:如果你的手工启动的话,因为缓存的问题,操作系统有可能直接从缓存中读取数据,而不发read irp,所以你不会拦截到read irp。 启动方式为0,就是HKLM/System/CurrentControlSet/Services/sfilter 的 Start 值为 0
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-04-29 10:32
我原先用你的例子测U盘加解密是没问题的,现在改用在本地E:盘上(NTFS),为什么解不了密了,整个E盘下的内容都打不开
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-30 11:13
我原先用你的例子测U盘加解密是没问题的,现在改用在本地E:盘上(NTFS),为什么解不了密了,整个E盘下的内容都打不开


是否加密了根目录的全部文件
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-04-30 13:10
E盘下只有一个文件,这个文件被我加密后,然后我就解密,出现的情况是“文件或目录损坏且无法读取”的错误,但用同样的方法在U盘上试却成功
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-04-30 13:43
在问个问题,现想对只定的文件格式加密,我的做法如下
if(file->FileName.Buffer)
{
 WCHAR  OldName;
 PWCHAR  Ps = NULL;
 RtlCopyUnicodeString(&name,&file->FileName);
 Ps = wcsrchr(&name,L\'.\');
 ++Ps;
 OldName = *Ps;
 if(_wcsnicmp(OldName,L“txt”,3) == 0)
 {
   isJiaMi = TRUE;
 }
}
if(isJiaMi)
{
加密
}
上面的判断后缀名是不是txt的代码放在IRP_MJ_WRITE中,最后机器总是重启,请问这段代码应放在哪里才好,
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-05-01 09:50
在问个问题,现想对只定的文件格式加密,我的做法如下
if(file->FileName.Buffer)
{
 WCHAR  OldName;
 PWCHAR  Ps = NULL;
 RtlCopyUnicodeString(&name,&file->FileName);
 Ps = wcsrchr(&name,L\'.\');
 ++Ps;
 OldName = *Ps;
 if(_wcsnicmp(OldName,L“txt”,3) == 0)
 {
   isJiaMi = TRUE;
 }
}
if(isJiaMi)
{
加密
}
上面的判断后缀名是不是txt的代码放在IRP_MJ_WRITE中,最后机器总是重启,请问这段代码应放在哪里才好,


放在IRP_MJ_CREATE中,然后把该文件是否需要加密的标志保存起来
在write中读取该标志
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-05-08 16:02
我按你的建议改了一下程序,现在不重启了,但判断后缀名我还是搞不定,
代码如下,假如file->FileName = \"\\test.txt\";
if(file->FileName.Buffer)
{
PWCHAR  Ptr = NULL;
Ptr = wcsstr(&file->FileName,L\"txt\");
}
执行后Ptr总是空的,请给与指导
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-05-08 20:46
这个问题解决了,谢谢大家的关注
游客

返回顶部