|
|
随笔分类 -
驱动
摘要:标 题:【原创】NDIS中间层驱动开发在Win7系统下和Windows XP系统下的区别作 者:tianhz时 间:2011-07-21,14:58:04链 接:http://bbs.pediy.com/showthread.php?t=137545网络数据由在网络上发送和接收的数据包组成。NDIS提供了数据结构来描述它们,NDIS6.0提供了如下数据结构:1)NET_BUFFER2)NET_BUFFERLIST3)NET_BUFFER_LIST_CONTEXT 在NDIS6.0中,NET_BUFFER是封闭网络数据的基本构建块。每一个NET_BUFFER都有一个MDL链。这些MDL映射的缓冲
阅读全文
摘要:[0x00] 网上有很多讨论关于NDIS HOOK的文章,但大多只讲了WIN7之前的HOOK NDIS_OPEN_BLOCK下的例程,至于WIN7下怎么HOOK以及如何做MINIPORT-HOOK,网络上则鲜有提及.根据前阵子的相关分析,我把NDIS HOOK总结一下,网上有一些讨论NDIS HOOK的文章,请读者先阅读那些文章对NDIS HOOK有个基本了解.[0x01] 首先是获取物理网卡的设备GUID,如果只是做普通的NDIS HOOK则可以忽略此步.为什么要获取物理网卡的GUID呢,因为系统内可能有多个MINIPORT,每个MINIPORT对应一个网卡设备,无论这个网卡是虚拟的还是物理
阅读全文
摘要:文件过滤驱动一、文件透明加解密关键字:透明、文件过滤驱动、加密标识,缓存文件过滤驱动最重要的两点是搞定加密标识和缓存管理1、透明概念:透明指的是用户在操作的时候,虽然后台在自动的进行加解密,但是用户根本就不知道加密的存在,就像中间隔了一层透明的玻璃一样。 透明的好处在于不改变用户的操作,一切都和加密之前一样,甚至在有些企业安装加密后都无需通知所有的员工,就像加密并不存在一样,只是加密文件到了企业安全环境的外部才会发现文件无法打开。透明的程度也是加密软件一个很重要的方面,例如:正在编辑一个Word文件时,能否拷贝或者使用其他程序来读取这个文件,如果不能那么这里就不够透明,在一些PDM的文档管理软
阅读全文
摘要:标 题:【分享】整理一份我对Windows文件系统过滤驱动的sFilter工程代码的详细说明作 者:tianhz时 间:2012-06-19,18:32:07链 接:http://bbs.pediy.com/showthread.php?t=152338我希望大家能够注意几个忽略的地方:(1)ShadowCopyVolume---也就是卷影。(2)FastIo函数。(3)文件系统控制设备对象的绑定。(4)文件系统卷设备的绑定。(5)SfCreate函数的一个小细节。
阅读全文
摘要:晕了好几天,总算把Ifs的动态加解密给闹明白了。为了后来者不再晕,总结如下:1.加密在SfWrite(IRP_MJ_WRITE)中,而不是完成例程,解密在SfRead(IRP_MJ_READ)中,而不是完成例程,3.只要处理IRP_NOCACHE|IRP_PAGING_IO|IRP_SYNCHRONOUS_PAGING_IO2.加密简单过程:a.得到Windows传下来的Buffer Address,if (Irp->MdlAddress){SysDataBuf = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePr
阅读全文
摘要:http://msdn.microsoft.com/en-us/library/windows/hardware/ff539260(v=vs.85).aspxIf a completion routine does not signal an event, it must check theIrp‑>PendingReturnedflag. If this flag is set, the completion routine must mark the IRP pending by callingIoMarkIrpPending.
阅读全文
摘要:http://msdn.microsoft.com/en-us/library/windows/hardware/ff539307(v=vs.85).aspxThe following guidelines briefly discuss how to avoid common programming errors in file system filter driver completion routines.IRQL-Related ConstraintsBecause completion routines can be called at IRQL DISPATCH_LEVEL, th
阅读全文
摘要:The NT Insider, Vol 4, Issue 1, Jan-Feb 1997 | Published: 15-Feb-97| Modified: 22-Aug-02Click Here to Download:Code Associated With This ArticleZip Archive, 20KBOne frequent question heard from NT driver writers is how to perform I/O operations from within their driver. This question appears in one
阅读全文
摘要:The NT Insider, Vol 4, Issue 3, May-Jun 1997 | Published: 15-Jun-97| Modified: 22-Aug-02Previously we described how to "roll your own IRPs" for performing I/O in the kernel. This is a very powerful technique and one which is highly useful for those building device drivers, file system driv
阅读全文
摘要:By The Members of NTDEV and NTFSD | Published: 01-May-03| Modified: 01-May-03IRP Dispatching and HandlingIf a dispatch routine returns STATUS_PENDING, the IRP passed into thedispatch routine must be marked pending with IoMarkIrpPending().If an IRP is marked pending with IoMarkIrpPending() in a dispa
阅读全文
摘要:The NT Insider, Vol 5, Issue 1, Jan-Feb 1998 | Published: 15-Feb-98| Modified: 20-Aug-02As part of our effort to address some of the more rudimentary issues in writing NT drivers, we thought it would be a good idea to talk about IRPs and data buffers… a topic we’ve never really covered in any detail
阅读全文
摘要:今天是我的18周岁生日,突然就想发表篇文章,而前几天刚好在做IopfCompleteRequest的分析,所以今天就赶赶急,把分析做做完,发表出来。我在网上认识的一个前辈说过,看网上的文章,学网上已经有的技术,不是真技术;而只有自己研究才是自己所学的,所得的。而其中最为重要的是:开创自己的技术。而开创自己的技术,就需要自己先有研究的基础。本文自然不是什么开创之作,IopfCompleteRequest的伪代码早已漫天飞IopfCompleteRequest也早已没有什么秘密可言。但是我还是坚持一个人独立地看windows的二进制码,凭自己所学,分析那一个个指令。鉴于本人水平有限,从接触编程到现
阅读全文
摘要:/**@implemented*/VOIDFASTCALLIofCompleteRequest(INPIRPIrp,INCCHARPriorityBoost){PIO_STACK_LOCATIONStackPtr,LastStackPtr;PDEVICE_OBJECTDeviceObject;PFILE_OBJECTFileObject;PETHREADThread;NTSTATUSStatus;PMDLMdl,NextMdl;ULONGMasterCount;PIRPMasterIrp;ULONGFlags;NTSTATUSErrorCode=STATUS_SUCCESS;IOTRACE(I
阅读全文
摘要:NTSTATUSIoCallDriver( IN PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp ){ return IofCallDriver (DeviceObject, Irp);}NTSTATUSFASTCALLIofCallDriver( IN PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp ){ // // This routine will either jump immediately to IopfCallDriver, or rather // IovCallDriver. // retur
阅读全文
摘要:1. 一定不要在没有标注 I/O 请求数据包 (IRP) 挂起 (IoMarkIrpPending) 的情况下通过调度例程返回 STATUS_PENDING。2. 一定不要通过中断服务例程 (ISR) 调用 KeSynchronizeExecution。 它会使系统死锁。3. 一定不要将 DeviceObject->Flags 设置为 DO_BUFFERED_IO 和 DO_DIRECT_IO。 它会扰乱系统并最终导致致命错误。 而且,一定不要在 DeviceObject->Flags 中设置 METHOD_BUFFERED、METHOD_NEITHER、METHOD_IN_DIR
阅读全文
摘要:http://support.microsoft.com/default.aspx?scid=kb;EN-US;320275http://support.microsoft.com/default.aspx?scid=kb;EN-US;326315
阅读全文
摘要:在Windows分层驱动模型中,设备栈中的设备一般都是通过对上层传来的IRP做相应的处理来实现驱动的功能。这里对常用的几种IRP传递及完成的方式进行归纳和总结:1. 在本层驱动中完成1.1 在本层驱动中以同步方式完成在本层同步完成一般做完相应处理后,设置Irp->IoStatus.Status和Irp->IoStatus.Information,调用IoCompleteRequest完成该IRP,return IRP的完成状态即可。1.2 在本层驱动中以异步方式完成在本层异步完成一般是得到IRP后将其入队/起线程另行处理,同时调用IoMarkIrpPending将该IRP标记为Pe
阅读全文
摘要:1)当硬件连接到PC或从PC移除时,在硬件上会有信号跳变,BUS Driver会检测到器件的插入和移除,比如DVI的hotplug,再比如USB1.1的1.5K上拉。BUS Driver将调用IOInvalidateDevcieRelations,PNP Manager将知道BUS上的Device关系有所改变。2)为了获得新的Device关系,PNP Manager将调用IRP_MN_QUERY_DEVICE_RELATIONS。BUS Driver将会回应其BUS关系(目录)。3)一旦得知Device之间的关系,PNP Manager就能容易地确定哪些器件没有被初始化。IRP_MN_QUER
阅读全文
摘要:无意中看到一种通过控制92H端口bit0位,将其置1来实现重启的方法,刚才测试了一下,效果真好 mov al, 01 out 92h, al另一种,模拟键盘的reset mov al, 0xfe out 0x64, al注i8042 :键盘控制器8042的端口在cpu的io空间地址如下:port----Read/Write-----Function0x60----Read----------Read Input Buffer0x60----Write---------Write Output Buffer0x64----Read----------Read Status Register0x6
阅读全文
摘要:kd> !drvobj \driver\i8042prtDriver object (822c9b08) is for:\Driver\i8042prtDriver Extension List: (id , addr)Device Object list:82238020 822c9328 --------------------------------------------------...
阅读全文
|