我正在编写一个需要分配非分页内存池的驱动程序,出于性能考虑,该内存必须可以直接从用户模式程序访问。在驱动程序条目中,我用这两种方法分配了一些内存:pMdl=IoAllocateMdl(NULL,4096,FALSE,FALSE,NULL);if(!pMdl){DbgPrintEx(DPFLTR_IHVVIDEO_ID,DPFLTR_INFO_LEVEL,"ErroronIoAllocateMdl.Returningfromdriverearly.\n");returnSTATUS_INSUFFICIENT_RESOURCES;}MmBuildMdlForNonPagedPool(pMd
问题总结我的Windows应用程序包括一个加载相当简单的驱动程序的服务。根据MSKernelSigningdoc中描述的KMCS要求,该驱动程序包含嵌入式SHA1和SHA256签名,并包括两个签名证书的交叉签名证书链,用于在不使用CAT文件的情况下对驱动程序进行签名。该驱动程序在大多数Windows安装中都可以很好地加载,但是在极少数情况下无法加载,主要是在Windows7x64和Windows10x64上。错误为0x241(577):Windows无法验证此文件的数字签名。最近的硬件或软件更改可能安装了未正确签名或损坏的文件,或者可能是来自未知来源的恶意软件。更多信息在两个星期的大部
我使用Anacondainstaller安装了python并且很高兴地使用它附带的Jupyter版本。我还下载了(32-bit)windowsversionofpypy这在命令行中运行良好。如何让CPythonJupyter在运行我的python代码时使用pypy作为内核? 最佳答案 Pypy不需要不同的内核,它可以只使用ipykernel。因此,它没有单独列在Jupyter内核列表中。您可以使用用于installingkernelsfordifferentPythonenvironments的相同方法为pypy安装内核。例如,py
由于这些API,它在用户模式下简单明了。如何从Windows内核模块读取/写入指定进程的用户空间内存?驱动目标平台是windowsxp/2003 最佳答案 使用NtWriteVirtualMemory/NtReadVirtualMemory写入其他进程-您需要先打开该进程的句柄。请注意,如果您已经在进程中,则可以直接写入-例如,如果您正在响应来自进程的DeviceIoControl请求,您可以直接写入用户模式地址,它们将在地址中调用您的进程的空间。 关于Windows内核ReadProc
这是关于Windows内核驱动程序和内存管理的。我真的很好奇是否有一个函数(或者任何不方便的方法)来获取(或迭代)特定池标签的所有内存分配?这些是使用ExAllocatePoolWithTag(type,size,tag)...有使用特定池标签的内核函数,现在我需要找到使用该标签进行的所有分配?我比较确定这是不可能的(出于安全原因),但仍需要对此进行确认。干杯,将更新:(关于下面的WinDbg评论)kd>!poolfindObFlScanninglargepoolallocationtableforTag:ObFl(fffffa8002290000:fffffa8002350000)S
宿主:VisualStudio2012、Windows8宿主、WDK8目标:VirtualBox-Windows7当我尝试在VisualStudio中添加目标计算机(驱动程序->测试->配置计算机)时(如http://msdn.microsoft.com/en-us/library/windows/hardware/hh439359%28v=vs.85%29.aspx):我选择“配置计算机并选择调试器设置”我选择使用串行连接但结果总是“找不到VM名称的主机条目”如果我尝试通过网络连接,VS会给出相同的响应(我知道不支持通过网络从Win8主机到Win7目标的内核调试)。我看不到连接有问题
我最近开始尝试为Windows开发文件系统驱动程序,并开始研究VisualStudio2013中提供的内核调试器。内核开发器是一款了不起的软件——它能够调试实时内核(断点、堆栈跟踪、内存访问和所有内容)通过RS232连接连接的远程机器。我不明白的一件事是——如何通过RS232端口进行这种调试?我对内核的理解是,它是直接针对硬件组件的软件,是系统中最底层的软件之一。某些东西怎么能在内核“之上”运行,从而允许远程调试内核本身?内核如何可以纯粹在软件中进行调试?不干扰响应机器本身调试请求的软件(可能在内核下运行)? 最佳答案 内核调试器既
我需要从注册表(最好)或文件中读取设置。该驱动程序是一个内核驱动程序,设置为启动类型设置为SYSTEM,因此所有服务和WinAPI不一定都可用。我正在尝试使用RtlQueryRegistryValues函数以便从注册表中读取单个String值,但无论我做什么,我似乎都得到相同的0xC0000034转换为STATUS_OBJECT_NAME_NOT_FOUND的错误代码.根据MSDN上提供的文档STATUS_OBJECT_NAME_NOT_FOUND从RtlQueryRegistryValues返回当路径参数与有效键不匹配时,或者设置了特定标志并且不满足特定于该标志的条件时。据我所知,注
我目前正在上大学操作系统类(class),我们正在为我们的项目研究Windows内核,更准确地说是WRK,即Windows研究内核。WRK基于win2k3服务器。然而,我真的很难挖掘资源来帮助学习操作系统开发、Windows内核开发的基础知识以及一般地绕过WindowsAPI。我们正在使用Russinovich的MicrosoftInternals一书,但我想知道你们中是否有任何人可以向我推荐一些很棒的资源,无论是书籍、在线指南还是一些旧的类笔记。谢谢! 最佳答案 您具体在寻找什么?在线资源?为此,OSROnline是更好的网站之一
我一直在研究Windows内部结构,最近才了解系统调用,我想知道是否可以像函数一样使用这些系统调用?我知道它们并不是真的要从外部访问。例如:NtUserEmptyClipboard是Win32k.sys中的一个系统调用,它的地址是0x117f如果我想像函数一样使用这个调用,我该怎么做呢? 最佳答案 你想做什么在很大程度上取决于你感兴趣的架构,但要知道的是,ntdll.dll是每个系统调用的用户模式蹦床-即唯一的一个在一天结束时实际进行系统调用的是ntdll。因此,让我们通过打开任何旧的exe(我选择记事本)在WinDbg中反汇编这些