草庐IT

内核提权

全部标签

c++ - 如何在 Windows 内核模式下获取进程使用的 CPU 时钟周期?

正如标题所暗示的,我对获取仅在内核模式下进程使用的CPU时钟周期很感兴趣。我知道有一个名为“QueryProcessCycleTime”的API可以返回CPU时钟进程的线程使用的周期。但这个值包括在用户模式和内核模式下花费的周期。我怎样才能获得仅在内核模式下花费的周期?我需要使用性能计数器来获取它吗?如果是,我应该使用哪一个?预先感谢您的回答。 最佳答案 我刚刚发现一篇有趣的文章,几乎描述了您的要求。在MSDNInternals上.他们在那里写道,如果您使用的是C#或C++/CLI,您可以轻松地从System.Diagnostic.

c - 从内核驱动程序到达内核 session 空间

我正在编写一个内核驱动程序,它应该读取(在某些情况下还写入)内核session空间(win32k.sys)中的一些内存地址。我读过另一个主题,例如在Windbg中,我应该将上下文更改为随机用户进程以读取内核session空间的内存(使用.process/p)。我怎样才能在内核驱动程序中做到这一点?我应该创建一个与驱动程序通信的用户进程(这是我现在的想法,但我希望有更好的解决方案)还是有更简单的解决方案? 最佳答案 session空间未映射到系统地址空间(驱动程序共享,如果未附加到任何进程)。这就是为什么您在访问win32k时出现蓝屏

windows - 故意使内核崩溃

有什么方法可以故意让内核崩溃(例如,内核崩溃、蓝屏、黑屏或其他)。假设我可以更改任何寄存器并拥有系统的管理权限。我想在Windows和Linux平台上演示这一点。感谢您的任何意见! 最佳答案 在Linux中,您必须使用CONFIG_MAGIC_SYSRQ选项编译内核,然后您可以通过将crash命令写入/proc/sysrq-trigger来使内核崩溃,或者按Alt+SysRq+C。查看documentation了解详情。在Windows中,您必须为键盘驱动程序设置CrashOnCtrlScroll注册表项,然后重新启动,然后您可以按

Windows 内核模式又名 SYSTEM 特权?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎不是关于aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers的.如果您认为这个问题是关于anotherStackExchangesite的主题,您可以发表评论,说明问题可能在哪里得到解答。关闭8年前。Improvethisquestion我可以说在SYSTEM权限下运行的进程(比如cmd.exe)正在内核模式下运行吗?我的意思是,这些概念(在SYSTEM权限下运行的进

windows - 如何在 WinDBg 中启用内核跟踪

我已经提到了这个post:但没有帮助。发行edKd_DEFAULT_Mask8没有引起任何变化。而且我不知道如何在此处添加DWORDHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\DebugPrintFilter调用了值为8的DEFAULT,因为我在我的注册表下看不到DebugPrintFilter?我有办法验证是否安装了我的硬件的调试驱动程序,但即使在验证之后,我似乎也无法在windbg中获得内核跟踪。有一个工具叫DbgView.exe,因为我启用了以下捕获选项:CaptureWin32Captur

c - 在不离开内核空间的情况下实现 "tee"

在Linux中,tee命令将数据从stdin复制到stdout和文件;通过利用tee和splice系统调用,可以在数据永远不会离开内核空间的情况下实现此功能。在Windows上实现tee命令并且数据永远不会离开内核空间需要哪些函数?虽然tee命令有一个简单的实现,包括read、open和write将数据复制到用户空间,我特别感兴趣的是学习如何在数据不离开内核空间的情况下分割文件流。 最佳答案 这个问题的前提是错误的。tee命令不依赖于tee()或splice()系统调用,也不是零拷贝;它基本上实现为:openfileforwriti

windows - 内核定时器对象和同步

不知是否有人能简单地告诉我(我知道这不是一个简单的主题)内核定时器对象是如何用于同步对内核中数据结构的访问的?编辑:内核定时器对象是内核调度程序对象的一部分,内核调度程序对象是内核的一组同步对象。我还想知道计时器对象是否是线程在能够继续之前必须等待获取句柄的东西,或者它是线程等待获取句柄的计时器到期时触发的回调?我希望这是有道理的。内核对我来说是一个新主题。 最佳答案 简短回答:计时器对象不用于同步对内核中数据结构的访问。为此,NT内核具有快速互斥、保护互斥、推锁、互斥对象等功能。我不太明白你的问题——你在说什么数据结构?不过,我将

c - 如何枚举内核中指定进程的所有打开句柄(Windows)

我有一个内核驱动程序。我如何枚举我的内核驱动程序中指定进程的所有打开句柄?我想关闭这些句柄。谢谢! 最佳答案 Iwanttoclosethesehandles.就其值(value)而言,仅仅因为可以做某事,并不意味着应该做。这是个坏主意。也就是说,可以使用对Zw/NtQuerySystemInformation的未记录调用来枚举所有进程的所有句柄。具有信息类SystemHandleInformation。使用这些术语进行网络搜索会得到您想要的结果。 关于c-如何枚举内核中指定进程的所有打

windows - Windows 内核是否有读写 fork() 指令?

BecausePOSIX.1compliancewasamandatorygoalforWindows,theoperatingsystemwasdesignedtoensurethattherequiredbasesystemsupportwaspresenttoallowfortheimplementationofaPOSIX.1subsystem(suchastheforkfunction,whichisimplementedintheWindowsexecutive,andthesupportforhardfilelinksintheWindowsfilesystem).这个f

windows - 在 Windows 中,默认情况下禁用本地内核调试。为什么?

我正在使用Windows10。首次安装Windows时,默认情况下禁用本地内核调试(windbg-kl)。要启用它,您必须运行bcdedit-debugon并重新启动。(不过,据我所知,即使禁用本地内核调试,SysinternalsLiveKd似乎也能正常工作。)为什么默认禁用本地内核调试?始终启用它有什么缺点吗? 最佳答案 如评论中所述,默认情况下禁用内核调试,因为它允许(即使在64位Windows上)加载未真正签名(自签名)的内核驱动程序。(并禁用PatchGuard等)当然,关于“管理员仍然生活在用户区”的评论是无稽之谈。评论