`
camel2099
  • 浏览: 44261 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

过滤驱动加密文件(代码)

阅读更多
摘要:     我想做一个unlocker一样的程序,不管这个文件有没有被使用,先实现删除它。在查资料过程中,就知道了如果不访问磁盘扇区的话,除非写驱动才能做到。奈何时间有限,工作匆忙,一直没有完成。而且忽视了更简便的方法——在别的路径下把修改后的OCX控件重新注册一下就可以了。

    这些都不要说了,这段闲暇时间,我写了一个过滤加密,就这么简单。在DDK的示例Sfilter基础上改的。

 
文件过滤加密的源代码



//过滤读

NTSTATUS SfRead(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp)

{

  PIO_STACK_LOCATION    irp_stack;

  BOOLEAN           is_crypt;

  NTSTATUS          status;

  PSFILTER_DEVICE_EXTENSION devExt;



  PAGED_CODE();



  ASSERT(!IS_MY_CONTROL_DEVICE_OBJECT( DeviceObject ));

  ASSERT(IS_MY_DEVICE_OBJECT( DeviceObject ));

  devExt = (PSFILTER_DEVICE_EXTENSION)(DeviceObject->DeviceExtension);



  if(Irp->Flags & (IRP_NOCACHE | IRP_PAGING_IO | IRP_SYNCHRONOUS_PAGING_IO))

  {

    irp_stack = IoGetCurrentIrpStackLocation( Irp );

    is_crypt = IsMyCryptFile(irp_stack->FileObject);



    if(is_crypt) //是我的加密文件

    {

      //设置完成例程

      IoCopyCurrentIrpStackLocationToNext( Irp );

      IoSetCompletionRoutine(Irp, SfReadCompletion, 0, TRUE, FALSE, FALSE);



      //调用原来的驱动

      return IoCallDriver(devExt->AttachedToDeviceObject, Irp);

    }

  }



  //非加密文件

  IoSkipCurrentIrpStackLocation(Irp);

  return IoCallDriver(devExt->AttachedToDeviceObject, Irp);

}



//读操作的完成例程

NTSTATUS SfReadCompletion(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp, __in PVOID Context)

{

  ULONG        length; //长度

  PUCHAR       buffer; //缓冲区

  ULONG        i;

  PIO_STACK_LOCATION irp_stack; 



  irp_stack = IoGetCurrentIrpStackLocation( Irp );

  ShowUnicodeString(&(irp_stack->FileObject->FileName));

  DbgPrint(“SfReadCompletion 读文件解密”);



  length = Irp->IoStatus.Information;

  buffer = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority);

  for(i = 0; i < length; i++)

  {

    buffer[i] = buffer[i] – 17; //解密

  }



  return STATUS_SUCCESS;

}



//过滤写

NTSTATUS SfWrite(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp)

{

  PIO_STACK_LOCATION    irp_stack;

  BOOLEAN           is_crypt;

  NTSTATUS          status;

  PSFILTER_DEVICE_EXTENSION devExt;



  PAGED_CODE();



  ASSERT(!IS_MY_CONTROL_DEVICE_OBJECT( DeviceObject ));

  ASSERT(IS_MY_DEVICE_OBJECT( DeviceObject ));

  devExt = (PSFILTER_DEVICE_EXTENSION)(DeviceObject->DeviceExtension);



  if(Irp->Flags & (IRP_NOCACHE | IRP_PAGING_IO | IRP_SYNCHRONOUS_PAGING_IO))

  {

    irp_stack = IoGetCurrentIrpStackLocation( Irp );

    is_crypt = IsMyCryptFile(irp_stack->FileObject);



    if(is_crypt)

    {

      ULONG  length;       //长度

      PUCHAR buffer, buffer2;  //原来缓冲区和加密后缓冲区

      ULONG  i;

      PMDL   new_mdl;



      length = irp_stack->Parameters.Write.Length;

      buffer = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority);



      //分配同样大小的空间


来自:码农源库,http://www.vcclass.net/wordpress/?p=248
http://www.vcclass.net/wordpress/sitemap.html
分享到:
评论

相关推荐

    驱动层文件过滤加密源代码

    根据sfilter修改的,驱动层,C语言 经本人测试

    文件过滤驱动源代码 过滤层文件系统驱动的完整代码

    过滤层文件系统驱动的完整代码,实现了文件的加密,操作截获

    使用文件过滤驱动程序IFS实现对文件的加解密

    使用文件过滤驱动程序实现对文件的加密

    Windows文件系统过滤驱动开发教程(第二版)

    楚狂人的Windows文件系统过滤驱动开发教程(第二版) 我经常在碰到同行需要开发文件系统驱动。windows的pc机上以过滤驱动居多。其目的不外乎有以下几种: 一是用于防病毒引擎。希望在系统读写文件的时候,捕获读写的...

    FsDriver(一个过滤层文件系统驱动的完整代码)

    FsDriver(一个过滤层文件系统驱动的完整代码,实现了文件的加密,操作截获等)

    易控王文件加密软件 v2017.zip

    易控王文档加密软件是一款功能强大、安全稳定的企业文件加密系统,加密办公文档、设计图纸、研发代码等,业内领先的双缓冲Windows底层文件驱动过滤技术,对企业中涉密的重要的图纸、财务数据、文档数据进行强制性...

    Windows内核安全与驱动开发随书代码.rar

    开发篇介绍了在实际工作中可能遇到的各种开发需求的技术实现,包括:串口的过滤、键盘的过滤、磁盘的虚拟、磁盘的过滤、文件系统的过滤与监控、文件系统透明加密、文件系统微过滤驱动、网络传输层过滤、Windows过滤...

    寒江独钓 WINDOWS内核安全编程.随书光盘

    主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及3类NDIS驱动),以及最新的...

    《寒江独钓:Windows内核安全编程》源码

    主要知识重点包括:Windows串口与键盘过滤驱动、 Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI 过滤驱动及3类NDIS驱动),以及最新...

    寒江独钓-Windows内核安全编程_4.pdf

    主要知识重点包括:windows串口与键盘过滤驱动、windows虚拟存储设备与存储设备过滤驱动、windows文件系统过滤驱动、文件系统透明加密/解密驱动、windows各类网络驱动(包括tdi过滤驱动及3类ndis驱动),以及最新的...

    寒江独钓-Windows内核安全编程_5.pdf

    主要知识重点包括:windows串口与键盘过滤驱动、windows虚拟存储设备与存储设备过滤驱动、windows文件系统过滤驱动、文件系统透明加密/解密驱动、windows各类网络驱动(包括tdi过滤驱动及3类ndis驱动),以及最新的...

    寒江独钓-Windows内核安全编程_3.pdf

    主要知识重点包括:windows串口与键盘过滤驱动、windows虚拟存储设备与存储设备过滤驱动、windows文件系统过滤驱动、文件系统透明加密/解密驱动、windows各类网络驱动(包括tdi过滤驱动及3类ndis驱动),以及最新的...

    寒江独钓-Windows内核安全编程_2.pdf

    windows文件系统过滤驱动、文件系统透明加密/解密驱动、windows各类网络驱动(包括tdi过滤驱动及3类ndis驱动) ,以及最新的wdf驱动开发模型。有助于读者熟悉windows内核驱动的体系结构,并精通信息安全类的内核...

    windows驱动开发技术详解-part2

     1.2 第一个驱动程序HelloDDK的代码分析  1.2.1 HelloDDK的头文件  1.2.2 HelloDDK的入口函数  1.2.3 创建设备例程  1.2.4 卸载驱动例程  1.2.5 默认派遣例程  1.3 HelloDDK的编译和安装  1.3.1 用...

    Windows驱动开发技术详解的光盘-part1

     1.2 第一个驱动程序HelloDDK的代码分析  1.2.1 HelloDDK的头文件  1.2.2 HelloDDK的入口函数  1.2.3 创建设备例程  1.2.4 卸载驱动例程  1.2.5 默认派遣例程  1.3 HelloDDK的编译和安装  1.3.1 用...

    寒江独钓-Windows内核安全编程_7.pdf

    主要知识重点包括:windows串口与键盘过滤驱动、windows虚拟存储设备与存储设备过滤驱动、windows文件系统过滤驱动、文件系统透明加密/解密驱动、windows各类网络驱动(包括tdi过滤驱动及3类ndis驱动),以及最新的...

    寒江独钓-Windows内核安全编程_6.pdf

    主要知识重点包括:windows串口与键盘过滤驱动、windows虚拟存储设备与存储设备过滤驱动、windows文件系统过滤驱动、文件系统透明加密/解密驱动、windows各类网络驱动(包括tdi过滤驱动及3类ndis驱动),以及最新的...

    寒江独钓-Windows内核安全编程_1.pdf

    主要知识重点包括:windows串口与键盘过滤驱动、windows虚拟存储设备与存储设备过滤驱动、windows文件系统过滤驱动、文件系统透明加密/解密驱动、windows各类网络驱动(包括tdi过滤驱动及3类ndis驱动),以及最新的...

    Windows内核安全驱动开发(随书光盘)

    13.1.1 文件系统微过滤驱动的由来 297 13.1.2 Minifilter的优点与不足 298 13.2 Minifilter的编程框架 298 13.2.1 微文件系统过滤的注册 299 13.2.2 微过滤器的数据结构 300 13.2.3 卸载回调函数 303 13.2.4 ...

    寒江独钓配套源码

    主要知识重点包括:Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及3类NDIS驱动),以及最新的...

Global site tag (gtag.js) - Google Analytics