21得票2回答
如何开始学习Windows内核编程?

我是一名应用程序开发者,主要使用C#。我有一些关于C/C++的知识。我非常着迷并对Windows内核开发感兴趣。我已经勾勒出了一个学习计划。1. Understand Windows internals(By books) 2. Try Simple Modules and keep expa...

17得票4回答
从Linux调试Windows内核

我曾经使用VirtualKD、WinDBG和一台虚拟机来调试Windows内核。 最近,我得到了一台Linux机器,现在我想知道:当你的主机无法运行VirtualKD / WinDBG*时,调试Windows内核的最简单方法是什么? 我猜解决方案需要两个虚拟机,但我宁愿在我的实际机器上托管...

14得票1回答
为什么Windows要在内核中处理滚动条?

“所有” Windows 版本的新1位漏洞使用处理滚动条的内核代码中的漏洞。这让我想到了什么。为什么 Windows 要在内核中处理滚动条,而不是用户模式?历史原因?其他操作系统是否也这样做?

10得票2回答
在用户空间传递C#字符串到内核模式C并使用它来查找特定的LDR_DATA_TABLE_ENTRY出现问题。

我很难将从用户模式传递的LPWSTR类型字符串与LDR表条目类型UNICODE_STRING进行比较。 内核C:struct { int pid; int user_pid; int size; int protection_mode; int allo...

9得票2回答
实现1毫秒精度的实时事件,而不受线程调度影响。

问题 我正在使用.Net 4.5创建基于Windows 7的C# WPF应用程序,其中一个主要功能是使用一组用户定义的周期时间来调用与自定义硬件进行接口的某些函数。例如,用户可能选择每10或20毫秒调用两个函数,另一个函数则为每500毫秒调用一次。用户可以选择的最小周期时间为1毫秒。 起初...

9得票3回答
Windbg和符号文件

我有一个与符号文件相关的问题。我尝试了符号文件路径并设置路径如下: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\driver2\objchk_win7_x86\i386 ...

9得票1回答
从Windows Subsystem for Linux进程调用Win32/NT-Native API?

我该如何在Windows子系统(WSL)中的Linux二进制文件中调用Windows API函数?我非常确定没有文档记录的方法可以实现,但尝试一下可能会很有趣。 我想调用Win32函数,如果不可能,至少要调用Windows NT本地API(Nt*,Zw*)。本地API应该至少可用,因为运行L...

8得票3回答
如何确定哪个进程在Windows中设置了高定时器分辨率

我的系统存在高定时器分辨率问题(NtQueryTimerResolution返回0.5毫秒)。 Maximum timer interval: 15.600 ms Minimum timer interval: 0.500 ms Current timer interval: 0.500 m...

8得票1回答
我该如何获取内核模块nt和win32k的地址?

我需要知道nt和win32k加载的基地址。我可以通过启用内核调试来获取这些信息,启动内核调试会话并运行命令lm以获取已加载模块列表。 我的目标是在不启用调试模式或使用内核调试器的情况下编程确定这两个模块的加载位置。我需要这些基址来解析Event Tracing for Windows日志文件...

7得票1回答
如何从TDI过滤驱动程序检查TCP端口是否可用?

我的 TDI 过滤驱动正在截取 IRP_MJ_CREATE 请求,并根据我的需求分配每个已打开的 TCP/UDP 连接的源端口。驱动程序内部维护了一个包含连接(包括套接字的打开/关闭和 TCP 优雅期)的表格,但我仍然偶尔看到驱动程序没有收到特定事件的通知,从而错误地假定特定的 TCP 源端口...