草庐IT

windows - Windows内核模式代码签名问题

问题总结我的Windows应用程序包括一个加载相当简单的驱动程序的服务。根据MSKernelSigningdoc中描述的KMCS要求,该驱动程序包含嵌入式SHA1和SHA256签名,并包括两个签名证书的交叉签名证书链,用于在不使用CAT文件的情况下对驱动程序进行签名。该驱动程序在大多数Windows安装中都可以很好地加载,但是在极少数情况下无法加载,主要是在Windows7x64和Windows10x64上。错误为0x241(577):Windows无法验证此文件的数字签名。最近的硬件或软件更改可能安装了未正确签名或损坏的文件,或者可能是来自未知来源的恶意软件。更多信息在两个星期的大部

Python - 如何获取内存地址的值?

我试图让Python从诸如0x101BFFDC之类的地址获取值/数据,这是我通过使用游戏CheatEngine发现的。我做了很多研究,认为我需要使用ReadProcessMemory。但是,我尝试了几个例子都没有成功。例如,我找到了如下代码:fromctypesimport*fromctypes.wintypesimport*importstructOpenProcess=windll.kernel32.OpenProcessReadProcessMemory=windll.kernel32.ReadProcessMemoryCloseHandle=windll.kernel32.Cl

c - 是否有来自低级库(如 kernel32.dll 或 ntdll.dll)的 wsprintf() 类型函数?

我正在编写一个低级记录器函数,它将文本字符串附加到文本(日志)文件的末尾。要求是此函数不应调用来自DLL的任何WinAPI,这些DLL可能尚不可用于该进程——例如当它从DllMain调用时处理程序。换句话说,它不能使用除了保证加载到任何用户模式进程中的库之外的任何库,即kernel32.dll或ntdll.dll.我可以通过CreateFile、WriteFile、CloseHandle、HeapAlloc、HeapFree等均来自kernel32.dll。问题在于格式化输出字符串。例如,我需要添加一些额外的(自动生成的)详细信息,例如当前时间、进程ID、sessionID等。我通常会

windows - 如何静态获取Windows系统调用程序集?

出于研究目的,我试图在Windows系统调用中找到特定模式。到目前为止,我一直在研究Windowsdll,例如ntdll.dll、user32.dll等,但它们似乎只包含准备跳转到系统调用的包装代码.例如:moveax,101Ehleaedx,[esp+arg_0]movecx,0calllargedwordptrfs:0C0hretn10h我猜calllargedwordptrfs:0C0h指令是链中的另一个网关,它最终通向实际的程序集,但我想知道我是否可以直接到达该程序集。 最佳答案 您正在查找错误的dll。系统调用在ntosk

windows - 如何在 Windows 中创建 "Block device"

对于熟悉Linux的人来说,可以创建一个模块并将其注册为block设备。这允许用户将其作为普通磁盘安装(而所有blockI/O均由模块处理,例如USB大容量存储)。有没有办法在Windows中执行此操作?(需要创建一个Windows可挂载的volume。原始数据将来自专有接口(interface))。 最佳答案 最简单的方法(这并不容易!)是写一个StorportMiniportdriver,您甚至也可以使用KMDF执行此操作。最新一期的OSR的“TheNTInsider”有一篇关于如何执行此操作的文章,但这不会容易。虽然您会学到很

c - 在驱动程序和 Windows 服务之间传递数据

将数据从设备驱动程序传递到Windows服务并返回的最干净的方法是什么? 最佳答案 这通常是使用DeviceInputandOutputControl(IOCTL)实现的.您可以定义自己的私有(private)控制码,然后双向发送信息。该函数是从用户模式调用的,即您的服务。 关于c-在驱动程序和Windows服务之间传递数据,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6152

Windows 内核 ReadProcessMemory()/WriteProcessMemory()?

由于这些API,它在用户模式下简单明了。如何从Windows内核模块读取/写入指定进程的用户空间内存?驱动目标平台是windowsxp/2003 最佳答案 使用NtWriteVirtualMemory/NtReadVirtualMemory写入其他进程-您需要先打开该进程的句柄。请注意,如果您已经在进程中,则可以直接写入-例如,如果您正在响应来自进程的DeviceIoControl请求,您可以直接写入用户模式地址,它们将在地址中调用您的进程的空间。 关于Windows内核ReadProc

Windows 内核 - 是否有类似 ExGetPoolsForTag(pool_tag) 的东西?

这是关于Windows内核驱动程序和内存管理的。我真的很好奇是否有一个函数(或者任何不方便的方法)来获取(或迭代)特定池标签的所有内存分配?这些是使用ExAllocatePoolWithTag(type,size,tag)...有使用特定池标签的内核函数,现在我需要找到使用该标签进行的所有分配?我比较确定这是不可能的(出于安全原因),但仍需要对此进行确认。干杯,将更新:(关于下面的WinDbg评论)kd>!poolfindObFlScanninglargepoolallocationtableforTag:ObFl(fffffa8002290000:fffffa8002350000)S

windows - 在 WinDbg 中定义自定义错误检查代码

有没有一种方法可以定义自定义代码(带有消息/描述等),以便在Windows的内核模式驱动程序中调用KeBugCheckEx来发出自定义BugCheck代码,WinDbg显示该自定义错误检查代码附带的关联消息? 最佳答案 有关已知错误检查代码的文本被编译到其中一个扩展DLL中。据我所知,这不是可以通过任何一种简单的方式扩展的东西(即你不能只在文件的某个地方添加文本)。 关于windows-在WinDbg中定义自定义错误检查代码,我们在StackOverflow上找到一个类似的问题:

windows - Visual Studio 2012 Windows 内核调试 - 无法提供 VM 目标

宿主: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目标的内核调试)。我看不到连接有问题