lyj790503
驱动牛犊
驱动牛犊
  • 注册日期2005-06-08
  • 最后登录2009-09-02
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望55点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
阅读:1594回复:2

求教:修改filespy中spycreate,禁止创建文件问题

楼主#
更多 发布于:2007-01-10 15:27
  LONG CreateDisposition = (pIrpSp->Parameters.Create.Options >> 24) & 0x000000ff;
DbgPrint("CreateDisposition = %d\n",CreateDisposition);
if(CreateDisposition==FILE_CREATE||CreateDisposition==FILE_OPEN_IF     ||CreateDisposition==FILE_OVERWRITE_IF)
//if(CreateDisposition==FILE_OPEN)
{
status = STATUS_ACCESS_DENIED;
Irp->IoStatus.Status = status;
Irp->IoStatus.Information = 0;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
}
我想当符合过滤条件时,就禁止创建文件,但调试发现创建要过滤的文件时CreateDisposition总为FILE_OPEN(数值为1),不能够阻止创建;如果先创建个禁止创建的文件同名的文件夹,在其中创建文件时被禁止,此时CreateDisposition为FILE_CREATE,不知何故?按照网上的资料创建文件时if(CreateDisposition==FILE_CREATE||CreateDisposition==FILE_OPEN_IF     ||CreateDisposition==FILE_OVERWRITE_IF)
这个判定应该满足呀!我用的xp操作系统,使用2000 free ddk编译的
                            
                            
etjon
驱动牛犊
驱动牛犊
  • 注册日期2004-09-19
  • 最后登录2008-04-22
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望11点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-01-12 16:41
你試試看,這是我寫的方式目前OK不知是否是你想要的~~
#define C_DISABLED_DELETE_ACCESS(x)             (x)&0x80 // 禁止刪除
#define C_DISABLED_WRITE_ACCESS(x)             (x)&0x40 // 可讀不可寫入檔案及目錄
#define C_DISABLED_READ_AND_WRITE_ACCESS(x) (x)&0x20 // 完全禁用

CreateDisposition = (pIrpStack->Parameters.Create.Options>> 24) & 0x000000ff;
...
..

NTSTATUS
wfCheckIORule(
   int option,
   int rule )
{
   // 禁止讀取及寫入
   if( C_DISABLED_READ_AND_WRITE_ACCESS(rule) && (
       option==FILE_CREATE ||
       option==FILE_OPEN_IF ||
       option==FILE_OVERWRITE_IF ||
       option==FILE_SUPERSEDE ||
       option==FILE_OPEN ||
       option==FILE_OVERWRITE ) )
   {
       return STATUS_SUCCESS;
   }

   // 可讀不可寫,包括不能建立目錄及任可型態的檔案
   if( C_DISABLED_WRITE_ACCESS(rule) && (
       option==FILE_CREATE ||
       option==FILE_OPEN_IF ||
       option==FILE_OVERWRITE_IF ) )
   {
       return STATUS_SUCCESS;
   }
   return 0;
}
lyj790503
驱动牛犊
驱动牛犊
  • 注册日期2005-06-08
  • 最后登录2009-09-02
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望55点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-01-10 16:55
我都郁闷半年了,现在if(CreateDisposition==FILE_OPEN)
这样进行判断的,谁能告诉我!谁能告诉我!
游客

返回顶部