-
大小: 58KB文件类型: .rar金币: 1下载: 0 次发布日期: 2023-12-21
- 语言: Html/CSS
- 标签: minifilter 透明 加解密
资源简介
现在很多做透明加解密的初学者都比较困惑,不知从何下手,我也是如此,从什么都不会开始,慢慢肯文件系统内幕,到OSR上面请教,四个月的时间还是收获颇丰。其实真正研究以后会发现,很多都是体力活,要不断的去跟踪文件的操作流程。在这里发一个基于minifilter的透明加解密的驱动源码仅供大家参考,其中也实现了对文件标识的处理,文件标识放在文件尾部。算是抛砖引玉吧。坦白的说,这个代码并不稳定(偶尔与norton杀毒软件会有冲突),但是我觉得整个流程是正确的,可能有些细节还没有考虑清楚,我觉得对初学者还是有一定帮助吧,当然大虾们可以跳过,呵呵。另外,有关加解密算法的代码由于不是我写的,也不好公开,所以我把相关代码用“\\\”给注释掉了(但没有去掉),请大家见谅,不过不会对整个流程产生影响。大家可以重点看一下各个派遣函数的实现。
欢迎大家拍砖,觉得有点意思就顶一下啊,在看代码的过程中如果有什么好的建议,也希望能告诉我。
最后非常感谢XiangXiangRen,zzbwang,neak47等网友在这段时间内对我的帮助。XiangXiangRen的书以及zzbwang的帖子对我完成这项工作有很大的帮助和参考价值,在此谨与大家分享。
编译环境:WDK6001.18002 XP x86
PS: 您可以将附件中的代码进行修改和转发,但转发时请注明出处。
http://bbs.driverdevelop.com/htm_data/39/1001/119736.html
代码片段和文件信息
#include “cache.h“
#include “file.h“
void Cc_ClearFileCache(PFILE_object Fileobject BOOLEAN bIsFlushCache PLARGE_INTEGER FileOffset ULONG Length)
{
BOOLEAN PurgeRes ;
BOOLEAN ResourceAcquired = FALSE ;
BOOLEAN PagingIoResourceAcquired = FALSE ;
PFSRTL_COMMON_FCB_HEADER Fcb = NULL ;
LARGE_INTEGER Delay50Milliseconds = {(ULONG)(-50 * 1000 * 10) -1};
IO_STATUS_BLOCK IoStatus = {0} ;
if ((Fileobject == NULL))
{
return ;
}
Fcb = (PFSRTL_COMMON_FCB_HEADER)Fileobject->FsContext ;
if (Fcb == NULL)
{
return ;
}
Acquire:
FsRtlEnterFileSystem() ;
if (Fcb->Resource)
ResourceAcquired = ExAcquireResourceExclusiveLite(Fcb->Resource TRUE) ;
if (Fcb->PagingIoResource)
PagingIoResourceAcquired = ExAcquireResourceExclusive(Fcb->PagingIoResourceFALSE);
else
PagingIoResourceAcquired = TRUE ;
if (!PagingIoResourceAcquired)
{
if (Fcb->Resource) ExReleaseResource(Fcb->Resource);
FsRtlExitFileSystem();
KeDelayExecutionThread(KernelModeFALSE&Delay50Milliseconds);
goto Acquire;
}
if(Fileobject->SectionobjectPointer)
{
IoSetTopLevelIrp( (PIRP)FSRTL_FSP_TOP_LEVEL_IRP );
if (bIsFlushCache)
{
CcFlushCache( Fileobject->SectionobjectPointer FileOffset Length &IoStatus );
}
if(Fileobject->SectionobjectPointer->ImageSectionobject)
{
MmFlushImageSection(
Fileobject->SectionobjectPointer
MmFlushForWrite
) ;
}
if(Fileobject->SectionobjectPointer->DataSectionobject)
{
PurgeRes = CcPurgeCacheSection( Fileobject->SectionobjectPointer
NULL
0
FALSE );
}
IoSetTopLevelIrp(NULL);
}
if (Fcb->PagingIoResource)
ExReleaseResourceLite(Fcb->PagingIoResource );
if (Fcb->Resource)
ExReleaseResourceLite(Fcb->Resource );
FsRtlExitFileSystem() ;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 13 2010-01-18 14:39 encryption_on-the-fly\Build.txt
文件 2015 2010-01-18 14:07 encryption_on-the-fly\engine\cache.c
文件 222 2010-01-18 10:36 encryption_on-the-fly\engine\cache.h
文件 3498 2010-01-18 14:36 encryption_on-the-fly\engine\common.h
文件 5759 2010-01-18 14:08 encryption_on-the-fly\engine\ctx.c
文件 1186 2010-01-18 14:04 encryption_on-the-fly\engine\ctx.h
文件 2481 2010-01-18 11:55 encryption_on-the-fly\engine\engine.inf
文件 266 2009-08-19 09:48 encryption_on-the-fly\engine\engine.rc
文件 14969 2010-01-18 14:09 encryption_on-the-fly\engine\file.c
文件 3744 2010-01-18 10:38 encryption_on-the-fly\engine\file.h
文件 121786 2008-01-19 13:16 encryption_on-the-fly\engine\fltKernel.h
文件 1975 2010-01-18 14:35 encryption_on-the-fly\engine\key.c
文件 528 2010-01-18 14:06 encryption_on-the-fly\engine\key.h
文件 74208 2010-01-18 14:33 encryption_on-the-fly\engine\main.c
文件 9158 2010-01-18 10:43 encryption_on-the-fly\engine\main.h
文件 399 2009-10-11 09:40 encryption_on-the-fly\engine\makefile
文件 4882 2010-01-18 14:10 encryption_on-the-fly\engine\message.c
文件 861 2010-01-18 10:56 encryption_on-the-fly\engine\message.h
文件 20007 2010-01-18 10:53 encryption_on-the-fly\engine\process.c
文件 2227 2010-01-18 10:44 encryption_on-the-fly\engine\process.h
文件 324 2010-01-18 10:31 encryption_on-the-fly\engine\sources
目录 0 2010-01-18 14:39 encryption_on-the-fly\engine
文件 944 2010-01-18 11:18 encryption_on-the-fly\include\error.h
文件 3700 2010-01-18 14:06 encryption_on-the-fly\include\interface.h
文件 1835 2010-01-18 10:41 encryption_on-the-fly\include\iocommon.h
目录 0 2010-01-18 14:37 encryption_on-the-fly\include
目录 0 2010-01-18 14:39 encryption_on-the-fly
----------- --------- ---------- ----- ----
276987 27
............此处省略0个文件信息
- 上一篇:24口交换机源码
- 下一篇:flutter移动电商实战.zip
评论
共有 条评论