摘要: 我想做一个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是一个开源的驱动级过滤框架,常用于开发文件系统过滤驱动,如日志记录、文件访问控制等。通过对SFilter进行改造,我们可以实现文件在读写时的实时加密,确保数据在存储和传输过程中的安全。 驱动层文件过滤...
从给定的文件标题、描述、标签以及部分内容中,我们可以提炼出以下IT领域的知识点,主要聚焦于操作系统内核级的过滤驱动加密技术。 ### 过滤驱动基础 **过滤驱动**是操作系统内核中的一种特殊驱动程序,它通过拦截...
总的来说,这个压缩包提供的源代码对于学习和理解文件过滤驱动的工作原理、如何实现文件加密以及操作截获功能,都是宝贵的资源。开发者可以通过研究这些代码,深入理解驱动开发,并且可能将其应用到自己的项目中,...
在Linux操作系统中,文件过滤驱动是一种特殊的内核模块,它允许对文件系统操作进行拦截、修改或监控。这种驱动程序通常被用在安全软件、审计系统或者需要对文件访问进行特殊控制的应用中。本文将详细讲解Linux文件...
在本案例中,"文件过滤驱动_闲暇时写的透明加解密过滤驱动,只支持流加密.zip" 提供了一个自编写的文件过滤驱动程序,用于实现文件的透明加解密。这个驱动程序是针对流加密设计的,这意味着它会在数据流传输过程中...
总的来说,使用IFS文件过滤驱动实现文件加解密是一项技术含量高、挑战性强的任务,涉及内核编程、加密算法、系统安全等多个领域。开发者需要具备扎实的技术基础和丰富的实践经验才能成功地完成这样的项目。
文件过滤驱动代码是一种在操作系统内核层对文件系统操作进行拦截和处理的技术,它主要用于实现安全控制、数据保护、性能优化等功能。在Windows系统中,文件过滤驱动通常以Kernel-Mode Filter Driver的形式存在,它...
本示例中的“一个文件过滤驱动的完整代码,实现了文件加解密”是针对IFS的一个应用实例,旨在提供一种安全措施,保护文件内容不被未经授权的访问或修改。 IFS驱动程序通常由以下几部分组成: 1. 驱动初始化:驱动...
文件系统过滤驱动在文件系统层次上拦截文件操作,如读取、写入、创建、删除等,从而实现在用户应用程序与实际文件系统之间插入加密逻辑。在给定的描述中提到的sfilter是一个示例,它是微软提供的一个用于开发文件...
通过监测文件系统的I/O请求,过滤驱动可以在病毒尝试修改文件时立即检测到异常行为,并采取相应措施阻止恶意代码的传播。 **3.3 进程控制** 过滤驱动还可以用于监控和控制特定进程对文件系统的访问权限,从而防止...
【文件过滤驱动FileMon】是一种用于监控文件系统操作的强大工具,尤其适合驱动程序初学者学习和研究。它的源代码能够帮助开发者深入理解Windows内核级的文件操作过程,以及如何拦截和处理IRP(I/O请求包)。 在...
在提供的压缩包中,"545931CharFilter.rar"可能包含一个字符过滤驱动示例,而"WDM编程编写文件过滤驱动.txt"很可能是关于该主题的详细指南或源代码注解。通过阅读这些资源,你可以更深入地了解WDM文件过滤驱动的实现...
5. **代码示例**:教程中会有丰富的代码示例,演示如何编写、编译和调试文件系统过滤驱动程序,让你能从实践中学习。 6. **问题排查与调试技巧**:分享在驱动开发过程中可能遇到的问题及解决方法,教你如何高效地...
Windows文件系统过滤驱动是一种特殊的设备驱动程序,它能够拦截或过滤系统中文件的读写操作,从而实现诸如防病毒扫描、数据加密、文件权限控制等功能。由于其复杂性和重要性,Windows文件系统过滤驱动的开发成为了一...
本篇将围绕“WIN2K-NT-XP-监视文件系统过滤驱动程序的驱动程序原代码”这一主题,深入探讨该领域的核心概念和技术细节。 一、文件系统过滤驱动概述 文件系统过滤驱动是Windows内核模式驱动程序的一种,它运行在...
在IT领域,文件过滤驱动程序是操作系统内核的一部分,它负责拦截、处理和转发与文件系统相关的I/O请求。在本项目"一个文件过滤驱动程序的实现"中,开发者已经成功地实现了一个这样的驱动,其核心功能是进行AES...
在IT行业中,文件系统过滤驱动(File System Filter Driver)是一种特殊的驱动程序,它在操作系统内核层拦截并处理文件系统操作。这种驱动通常用于增强或修改标准文件系统的行为,例如数据备份、加密、权限控制等。...
1. **IFS DDK(IFS Development Kit)**:IFS DDK提供了开发文件系统过滤驱动所需的基本工具和文档,尽管其文档可能不够详尽,但对于初学者来说是必不可少的资源。 2. **参考书籍**:《Windows NT File System ...
作者首先介绍了编写教程的初衷,以及在编写过程中对原始代码进行了改版,采用了微软的标准文件过滤驱动范例sfilter的代码,并对文件系统驱动开发的背景和需求进行了概述。作者特别强调了学习文件系统驱动开发之前的...