windows内存管理2(做双缓存透明加密驱动必看)

本文详细介绍了Windows系统中文件缓存的创建过程,包括CcInitializeCacheMap初始化、MmCreateSection的步骤,以及CcCopyRead时的内存管理。通过实例展示了从创建Section对象到映射视图到系统缓存的过程,讨论了如何处理无效地址和读取物理页面。此外,还展示了使用kdiew调试工具查看文件映射结构。
摘要由CSDN通过智能技术生成

这些东西我整理出来很久了,由于各种原因一直没放出来,引用的图来自网络或者书籍,如果你看的不错想要转载请注明本空间。

接上文:

*文件缓存分

一个典型文件创建缓存过程:

1.当文件对象第一次被缓存读写时,文件系统调用CcInitializeCacheMap初始化缓存

2.如果FileObject->SectionObjectPointer->SharedCacheMap== NULL ,从NonPagedPool分配SharedCacheMap,初始化其中一部分域。

3.调用MmCreateSection创建SharedCacheMap->Section,MmCreateSection中:

l       首先检查是否FileObject->SectionObjectPointer->DataSectionObject已经存在

l       没有存在从NonPagedPool分配一个NewControlArea大小为ControlAreaSize = sizeof(CONTROL_AREA) + sizeof(MSUBSECTION),设置到FileObject->SectionObjectPointer->DataSectionObject

l       创建Segment,这里以MiCreateDataFileMap为例子:

     *检查CcInitializeCacheMap传入的文件占用大小是不是大于系统定义的最大Section大小,计算文件需要的pte数量

     *PagedPool创建NewSegment,类型是MAPPED_FILE_SEGMENT,然后把源文件打散成许多块(Subsection)

     *在NonPagedPool中分配Subsection链接在NewControlArea后面

     *初始化NewControlArea剩下的域,得到第一个Subsection,设置其中域,找到所有的Subsection初始化他们

l       创建SECTION对象,并且初始化

4.创建Section完成后,如果是streamobject是不可能被映射的,这时候关闭modwrite标志

5.调用CcCreateVacbArray创建VACB索引数组

6.………….

当缓存创建完成后, 如果收到CcCopyRead

1.  首先先用GetActiveVacb找到是否落在活动视图内,如果没有落在活动视图内调用CcGetVirtualAddress取得地址:

l       用GetVacb取得FileOffset处的VACB,如果为NULL就调用CcGetVacbMiss从CcVacbFreeList中获得一个没有用的VACB

l       调用MmMapViewInSystemCache映射视图到系统缓存:

    *得到需要多少页面NumberOfPages,计算PteOffset与LastPteOffset

    *LOCK_PFN锁定PFN,提升DPC,得到第一个空闲的系统缓存地址保存到 PointerPte ,更新第一个空闲地址MmFirstFreeSystemCache

    *如果ControlArea->FilePointer不为空,调用MiAddViewsForSection分配原型pte(MappedSubsection->SubsectionBase = ProtoPtes)

软件名称:SEFS透明加密内核 V 2.0.0.1软件版本:2.0.0.1建议分类:系统安全/文件加密软件大小:371K安装平台:Win2000 sp4+urp / xp sp2 / 2003 sp1 / vista软件语言:简体中文/繁体中文/英文软件授权:共享软件软件主页:http://www.sefs.net支持邮箱:admin@sefs.net软件下载:http://www.sefs.net/setup.rar国内首家采用MS全新 MiniFilter架构的SEFS透明加密内核 V 2.0.0.1发布1、简述 SEFS透明加密开发内核是基于MS最新的IFS文件过滤驱动(MiniFilter)开发的透明加密平台。加密标识内置于文件本身、可支持PKCS7电子 信封、加密算法可在内核态。也可在应用层,支持MS CSP 标准,可实现对加密硬件如USBKEY的支持。加、解密操作均受保护 的内存区域完成,高效安全。不会产生临时文件,同时配套保护驱动可防止进程注入、内存Dump、和截屏操作,全程保护您的 机密资料。2、特点   1、强制加密:客户端指定规则或匹配规则产生的任意文件均强制加密。所有的“文件另存”均为加密。不管是 怎么样的文件名称。SEFS是智能识别应用程序的行为.  2、文件加密标记识别采用指纹智能识别技术,加密标记植于文件本身,支持电子信封模式(PKCS7)和支持   身份/身份组机制.方便交流和传输。  3、SEFS平台工作于文件系统驱动层面,可以支持内存映射文件的方式.而非一些基于API Hook方式的加密系   统绝对无法支持内存映射文件。例如最常见的notepad(记事本)/另外可执行文件的加载执行均是通过内存   映射文件的方式.  4、进程识别基于特征值,而非简单的基于进程名称判断。可防止进程改名、加壳等形式的攻击。  5、非授权进程无法读取密文。网络间受控文件的传输为密文。FoxMail、OutLook或Ftp客户端等网络软件无法发送 明文。(假设其为非授权进程的话) 6、完美解决明文缓存问题,即便是密文正在被打开,也不能非法夺取明文 7、使用全新的MiniFilter架构,同杀毒软件有较好的兼容性,同时在性能和稳定性方面,较老的IFS过滤驱动 有着明显的提升。 8、支持应用层的加、解密算法和引擎。可兼容MS CSP 、PKCS11 等标准,从而实现硬件的加解密。满足不同的安全级别的要求。3、安装环境 客户端:Win2000 sp4 + URP /XP sp2/2003 sp1 / Vista Win2000需要Update Rollup Pack (URP) 下载:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=B54730CF-8850-4531-B52B-BF28B324C6624、支持的软件: 1. 办公类: Microsoft Office 2000/XP/2003 、 Adobe acrobat7 、NotePad、 WordPad。 2. 图像类: Photoshop 、 CorelDraw12 、 Mspaint画图等 3. 设计类: AutoCAD 2004 、圆方BtoCAD、等 4. ...................SEFS--透明加密内核=============================================商业授权:sales@sefs.netBug 报告:bug@sefs.net
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值