为WindowsNT内核/内核系列开发内核补丁或驱动程序大约需要多长时间,这将引入新功能或替换现有功能?例如,添加不同的加密算法,或实现某种新的安全模型。实际编写内核补丁和驱动程序之间的优点/缺点是什么?理论上能否以内核补丁无法绕过的方式绕过驱动程序?我知道Windows内核是专有的,很难为其编写内核补丁,但这正是一些公司,尤其是AV公司所做的,没有微软的合作,所以有可能...... 最佳答案 Adifferentencryptionalgorithm这是通过扩展加密提供程序来完成的。有一个框架可以让您做到这一点。newsecuri
我无法在驱动程序中调用FileTimeToSystemTime()方法。错误是:错误C4013:“FileTimeToSystemTime”未定义;假设extern返回int。我也不能包含windows.h,因为我已经包含了ntddk.h,它会导致很多错误。如果我在header中将其声明为BOOLFileTimeToSystemTime(INconstPFILETIME,OUTPSYSTEMTIME);我会收到下一个错误:错误C2061:语法错误:标识符“FileTimeToSystemTime”错误C2059:语法错误:';'错误C2059:语法错误:“类型”错误C4013:“Fil
最新(64位)Windows版本的驱动程序必须在加载前进行签名。哪些证书颁发机构可以提供适用于此的证书? 最佳答案 如果您正在谈论64位驱动程序的内核模式驱动程序签名,那么您仅有的两个选择是Verisign(Veri昂贵)和Globalsign(不太昂贵)。我认为您可以在microsoft.com上找到的名单上的其他所有人现在都已不复存在,并且由于MS对削弱Verisign的过度影响力毫无兴趣,因此他们懒得添加其他任何人。即使是Thawte(Verisign的一部分)证书也不能用于KMCS,所以不要那样被捕获。
我正在使用Win10SDK中的poolmon来分析内存泄漏,我在卸载驱动程序后立即运行它。我的命令行是poolmon.exe-s-e-g-r-npoolmondump.txt来自poolmon/?的参数定义-sDisplaysessionpool-n[Logfile]TakeapoolsnapshotLogfilemaybespecified,defaultispoolsnap.log-g[PoolTagFile]DisplaydriverinformationusingPoolTagFileIfPoolTagFileisnotspecifieduse'pooltag.txt'from
我正在写一个windowsfilesystemminifilterdriver那一定会失败I/ORequestPackets(IRP's)在preoperationcallback基于它们的类型(读/写)。如果操作是类读(仅读取数据)或类写(修改数据磁盘-写入、删除、格式化等)?Here是主要IRP代码的列表。我正在考虑类似的事情:Data->Iopb->TargetFileObject->ReadAccessData->Iopb->TargetFileObject->WriteAccess但我不确定,我认为这些仅在术后回调中可用。文档真的很麻烦。进一步说明的代码示例:FLT_PREO
我的问题是关于Windows7的驱动程序开发。我需要拦截对驱动程序的系统调用。理论上,在这种情况下,建议创建一个过滤器驱动程序,但在我的例子中,该驱动程序不公开与过滤器兼容的接口(interface)。准确地说,它是一个Vista/7显示微型端口驱动程序。显示驱动程序作为标准WDM驱动程序加载。在它的DriverEntry中,它应该调用一个DxgkInitialize系统例程(我猜是由win32k.sys导出的)。我的目标是拦截此调用。任何人都可以建议我任何有用的资源,我可以找到有关如何实现此目标的信息吗?胜利的关键可能是将驱动程序可执行导入部分中的DxgkInitialize替换为我
我有一个Windows控制台应用程序,它使用并行IO卡进行高速数据传输。(通用标准HPDI32ALT)我的进程在用户模式下运行,但是,我确信在设备API后面的某个地方有一些内核模式驱动程序事件(PCIDMA传输、读取设备状态寄存器等)。工作模型大致是这样的:在启动时:我从API请求一个指向IO缓冲区的指针。在我的主循环中:阻止API等待设备缓冲区中的空间(低水位线)用传输数据填充IO缓冲区通过将指向IO缓冲区的指针传递给设备开始传输(在此期间,API使用PCI总线上的DMA将数据移动到卡)阻止API等待IO完成该应用程序似乎在长时间内以适当的数据速率和持续的吞吐量正常工作,但是,当我在
当引导过程完成或用户登录时,我能否获得对内核驱动程序的事件回调? 最佳答案 简单的答案是否定的。长答案是肯定的,但为什么呢?我会回答第二部分,因为它更容易。您可以轻松注册以在启动任何进程时接收通知。对WindowsInternals的简短检查会告诉您,从Vista及更高版本开始,进程userinit.exe是任何给定用户session中要执行的第一个进程。对于第一部分,这会根据您对引导过程的定义而发生很大变化。是在加载GUI时吗?是电脑可以接收网络请求的时候吗?哪些网络请求(TCP/IP、SMB、RPC)重要吗?每个问题的答案都非常
总结一下我的问题,我在一家使用激光制作贴在我们产品上的标签的公司工作。激光机附带了一个特定的标记软件,该软件具有一个API,我们将其与我们定制编写的软件一起使用来处理每个请求。现在,标记软件会保持打开状态,等待我们软件的请求,并会在请求时标记标签。我想改变这一切的运作方式。我想为激光制作一个虚拟打印机,它将接受打印请求并将该请求重定向到激光随附的标记软件。作为这个项目的一部分,我正在尝试对标记软件使用的文件结构进行逆向工程,以便我可以直接生成标签,然后只使用标记软件将它们发送到激光机。最终目标是扩大这种激光的有限使用范围,这样我就可以处理来自任何软件的打印请求。打印机驱动程序将用于限制
在Windows中,内核驱动程序可以执行诸如固定内存以备份虚拟地址范围(MMProbeandLockPages)之类的操作。但是我找不到一种方法来实际验证虚拟地址对特定进程是否有效。换句话说,内核驱动程序有没有办法检查给定的虚拟页面是否包含在给定进程的页表中? 最佳答案 如果驱动程序没有在进程上下文中运行,您必须先调用KeStackAttachProcess。然后,您可以在try/exceptblock中执行ProbeForRead或ProbForWrite。例如,请参阅WinDDK示例中src\general\ioctl\wdm\