关于监控文件系统上的IRP序列

本文介绍如何在Windows内核中利用Minifilter框架监控文件系统的IRP序列,以用于生物免疫学原理的恶意代码检测系统。通过申请共享内存、MDL和事件同步,实现ring0到ring3的数据传递。
摘要由CSDN通过智能技术生成

最近在写一个基于生物免疫学原理的恶意代码检测系统,其中需要应用程序在Windows内核中产生的IRP序列。本文总结一下怎么获得文件系统上的IRP序列。希望对需要ring0主动向ring3频繁通信的朋友有点帮助


基本框架是Minifilter。向minifilter注册回调函数来监控走过文件系统设备上的IRP。

Minifilter框架详见微软WDK文档:http://msdn.microsoft.com/en-us/library/ff540402.aspx


接下来就是如何拿到IRP序列并传输到ring3层:

首先得申请一块ring0和ring3的共享内存

1. ExAllocatePool申请一块非分页内存

2. IoAllocateMdl得到内存块的描述符列表MDL

3. MmBuildMdlForNonPagedPool将2中得到的MDL更新成物理页的描述符

通过向minifilter发送消息(FilterSendMessage),或者通过DeviceIoControl,来获得ring0中申请的内存的ring3地址

1. 在处理ring3消息的函数中通过MmMapLockedPages将物理页映射到当前进程地址空间,拿到虚拟地址

2. 将得到的当前进程地址空间地址通过输出缓冲区传回ring3


接下来就可以通过向那段共享内存写入数据,并用事件(Event)来通知ring3接收数据。这时候注意得让ring3在读取完毕后通过一个事件或者别的同步手段通知内核继续IRP捕获。

能这么做的原因是minifilter似乎已经完成了IRP请求的序列化,通过测试发现,针对单个

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IRPTrace2.00.002.zip ,IRP跟踪工具,支持Windows7。 IRPTrace 2.00.002, Build Date September 23, 2015 File name = README.TXT ====================================================================== CONTENTS ========= 1) IRPTrace Components 2) Release Notes 3) Known problems & limitations 4) Known bugs 5) Update to the documentation 6) List of supported I/O requests We strongly recommend that you read the following information about this release. 1) IRPTrace Components ===================== README.TXT - This file HOWTOREG.TXT - How to register IRPTrace and contact APSoft IRPTrace.EXE - Main application module IRPDRV.SYS - Driver for Windows NT/2000/XP/Server 2003 TERMINAL - Terminal log file TERMINAL.DLL - IRPTrace library UNINSDRV.DLL - IRPTrace library TSCUST.DLL - IRPTrace library IRPTRACE.CHM - Help file TIPS.TXT - 'Tip of the Day' tips GUID.INI - GUID database IRPTRACE.INI - Driver uninstallation information UNINST.ISU - Installation/uninstallation log file 2) Release Notes ================ Release 2.00.002 1. Fixed processing of IRPs at elevated IRQLs 2. Added support for Windows 10 Release (Build 10240) 3. Corrected processing of USB IOCTLs 4. Release 2.00.001 1. Added support for x64 Windows. 2. Added support for Windows Vista, 7 and 8.x. 3. Added decoding of all USB kernel-mode messages. 4. Added decoding of all CDB messages. 5. Revised Terminal tracing. 6. Revised on-line help file. 7. Revised list of known IOCTLs. 8. Revised list of known GUIDs. Release 1.00.007 1. Added support for Microsoft Windows Vista (?). 2. Redesign right panel view. 3. Fix bug with processing of Image hooks. 4. Several minor bugs were fixed. Release 1.00.006 1. A BSOD (blue screen) was fixed, which appeared o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值