据我所知,如果IRQL级别是分派(dispatch)的,那么您可以从非分页池访问内存。如果我们将尝试从分页池访问内存。只是想知道为什么? 最佳答案 "whywecanaccessmemoryfromnonpagedpoolatoraboveDISPATCHLEVEL"是一个陈述,问题是为什么我们不能从分页池IRQL>=DISPATCH_LEVEL访问内存?嗯..."AnyroutinethatisrunningatgreaterthanIRQLAPC_LEVELcanneitherallocatememoryfrompagedpoo
我正在收集有关内核dll函数的一些小信息。我发现这个名为CopyLZFileName/CreateLZFileName的函数以及与此LZ相关的其他一些函数。我用谷歌搜索了它..我找不到合适的来源。从名字我猜它复制/创建文件但我不确定是什么类型的文件..LZ对它有什么意义吗?请告诉我。 最佳答案 我一直认为LZ代表“Lempel-Ziv”,是当今最流行的压缩算法(LZ77、LZ78、LZW)的发明者。据我所知,在.CAB格式出现之前,这些API函数已用于创建单个压缩文件(又名COMMAND.CO_样式文件命名)。
为WindowsNT内核/内核系列开发内核补丁或驱动程序大约需要多长时间,这将引入新功能或替换现有功能?例如,添加不同的加密算法,或实现某种新的安全模型。实际编写内核补丁和驱动程序之间的优点/缺点是什么?理论上能否以内核补丁无法绕过的方式绕过驱动程序?我知道Windows内核是专有的,很难为其编写内核补丁,但这正是一些公司,尤其是AV公司所做的,没有微软的合作,所以有可能...... 最佳答案 Adifferentencryptionalgorithm这是通过扩展加密提供程序来完成的。有一个框架可以让您做到这一点。newsecuri
我无法在驱动程序中调用FileTimeToSystemTime()方法。错误是:错误C4013:“FileTimeToSystemTime”未定义;假设extern返回int。我也不能包含windows.h,因为我已经包含了ntddk.h,它会导致很多错误。如果我在header中将其声明为BOOLFileTimeToSystemTime(INconstPFILETIME,OUTPSYSTEMTIME);我会收到下一个错误:错误C2061:语法错误:标识符“FileTimeToSystemTime”错误C2059:语法错误:';'错误C2059:语法错误:“类型”错误C4013:“Fil
众所周知,在32位Windows操作系统下运行的程序只有2GB的可用虚拟内存。还知道其他2GB保留为内核空间。但是那个内核空间实际上是什么?我能理解内核本身需要保留,但为什么内核空间在进程的VAS中?谢谢。 最佳答案 获取WindowsInternals一书,它详细描述了这一点。不过,对于简短的总结,内核虚拟地址(KVA)空间中的一些内容:1)内核和HAL2)设备驱动3)内核模式堆(称为执行池,我总是觉得很有趣)4)通过句柄导出到用户态的对象(进程、线程、事件、互斥等对象)5)系统PTE,将各种有趣的东西映射到肮脏的用户模式应用程序
我的问题是关于Windows7的驱动程序开发。我需要拦截对驱动程序的系统调用。理论上,在这种情况下,建议创建一个过滤器驱动程序,但在我的例子中,该驱动程序不公开与过滤器兼容的接口(interface)。准确地说,它是一个Vista/7显示微型端口驱动程序。显示驱动程序作为标准WDM驱动程序加载。在它的DriverEntry中,它应该调用一个DxgkInitialize系统例程(我猜是由win32k.sys导出的)。我的目标是拦截此调用。任何人都可以建议我任何有用的资源,我可以找到有关如何实现此目标的信息吗?胜利的关键可能是将驱动程序可执行导入部分中的DxgkInitialize替换为我
我的问题是当头文件包含在SDK中(从VC10安装)并且我用来编译驱动程序的WDK不了解时,如何在内核空间(在Windows上)使用内部函数这个文件。当我#include一切正常,但是当我开始编译时,我得到了errorC1083:Cannotopenincludefile:'intrin.h':Nosuchfileordirectory我尝试将适当的文件复制到WDK目录,但没有成功。我知道我可以开始编写内联汇编,但老实说我想避免这样做,因为有内在支持,我只是不知道如何访问它。 最佳答案 WDK目录中缺少一些较新的header。只需将声
具体来说,我想知道同一session中的两个进程的kernel32.dll加载地址是否可以不同?我想使用createremote线程,所以只想知道在任何情况下,远程进程中的kernel32加载地址是否可以不同于注入(inject)进程? 最佳答案 Kernel32.dll在所有进程上具有相同的基址,以允许您执行您想要执行的操作。阅读:WhyarecertainDLLsrequiredtobeatthesamebaseaddresssystem-wide? 关于windows-我们可以re
当引导过程完成或用户登录时,我能否获得对内核驱动程序的事件回调? 最佳答案 简单的答案是否定的。长答案是肯定的,但为什么呢?我会回答第二部分,因为它更容易。您可以轻松注册以在启动任何进程时接收通知。对WindowsInternals的简短检查会告诉您,从Vista及更高版本开始,进程userinit.exe是任何给定用户session中要执行的第一个进程。对于第一部分,这会根据您对引导过程的定义而发生很大变化。是在加载GUI时吗?是电脑可以接收网络请求的时候吗?哪些网络请求(TCP/IP、SMB、RPC)重要吗?每个问题的答案都非常
我正在编写获取pci设备的方法,以编程方式给定供应商ID、设备ID(就像Linux内核中的pci_get_device一样)。为此,我需要获取设备对象配置。我从这里读到同样的内容:http://msdn.microsoft.com/en-us/library/windows/hardware/ff558707(v=vs.85).aspx现在为了测试这个,我制作了假驱动程序-服务安装框架,它将安装我的I/O设备驱动程序,在DriverEntry中我可以测试这个PCI功能。但是操作系统因irql_not_less_or_equal而崩溃,在irp=IoBuildSynchronousFsd