草庐IT

内核提权

全部标签

windows - 内核模式驱动程序和 IOCTL

我正在尝试做的事情:用户模式应用程序将进程ID发送给驱动程序驱动程序获取指定进程ID的句柄驱动程序将打开的句柄传递给用户模式应用我不确定这段代码是否完全有效。我对驱动比较陌生,所以我还没有设置调试,虚拟机也没有下载完成(连接慢的问题)。从用户模式应用程序获取进程ID应该工作正常,它应该作为ProcessId存储在PROCESS_INFO结构中。打开的句柄存储在与要发送回用户模式应用程序的ProcessHandle相同的结构中。我不确定如何将数据从内核返回到用户模式,也许有人可以简要解释一下。这是我的代码:#include#includeDRIVER_INITIALIZEDriverEn

windows - iPython ssh 从 Windows qtconsole 到远程 iPython 内核

我想在Linux机器上运行iPython内核,然后在Windows机器上远程连接到它。ipython内核工作正常,我可以在Linux机器上本地将qtconsole连接到它。在Windows上,我安装了ipython和paramiko作为它的ssh客户端。我在Windows7x64cmd上运行以下命令D:\...\.ssh>ipythonqtconsole--IPythonConsoleApp.sshserver='user@hostname:22'--IPythonConsoleApp.sshkey='myKey'--IPythonConsoleApp.password='1234'我

Windows 内核级全局临界区

我正在从内核级驱动程序(从IOControl功能)写入用户空间缓冲区,我需要确保用户空间程序/服务不会覆盖缓冲区或在驱动程序之前读取它已经写完了。有没有一种方法(如果有,首选方法是什么)在Windows的内核模式驱动程序中进入一种“全局临界区”,从而允许驱动程序在短时间内获得系统范围内处理的独占权以便驱动程序可以保证独占访问用户空间中的缓冲区? 最佳答案 考虑到您在评论中的回复,实现这一目标的一种方法是维护与每个系统处理器关联的内核模式线程,并在您写入缓冲区时将它们的IRQL提高到DPC。DPCIRQL不允许线程调度,因此用户模式应

windows - 为什么 CUDA 内核不在 VS 2013 中使用 CUDA 9.0 启动

我在Windows(GeForceGT720M)上写了一个基于CUDA的并行程序。我已经安装了CUDA9.0工具包和VisualStudio2013。一切正常,但是当我编译代码并运行它时,输出是错误的。程序是:#include#include"cuda_runtime.h"#include"device_launch_parameters.h"__global__voidsquare(float*d_out,float*d_in){intidx=threadIdx.x;floatf=d_in[idx];d_out[idx]=50;}intmain(intargc,char**argv)

windows - 内核模式转换

如果我理解正确,系统空间中的内存地址只能从内核模式访问。这是否意味着当执行映射到系统空间的组件时,处理器必须切换到内核模式?例如:虚拟内存管理器是一个经常使用的组件,映射在系统空间中。每当VMM在用户进程的上下文中运行时(假设它转换了地址),处理器是否必须切换到内核模式?谢谢,苏雷什。 最佳答案 通常,涉及2个部分。MMU(内存管理单元)是一个硬件组件,负责从虚拟地址到物理地址的转换。以及操作系统VM子系统。操作系统部分需要在特权模式(也称为内核模式)下运行,并将根据用户空间的需要设置/更改MMU中的映射。例如要请求更多(虚拟)内存

.net - 是否可以使用 WCF 与 Windows 内核模式软件进行通信?

WCF支持一些互操作性绑定(bind)。这些绑定(bind)是否允许与内核模式sw通信?AFAIK内核模式sw可以在LocalSystem安全上下文中打开命名管道。这些命名管道是否可与WCF互操作? 最佳答案 是的,您应该能够使用WCF中的命名管道绑定(bind)与内核模式软件进行通信。虽然有可能,但绝对不会容易。创建WCF服务以通过命名管道和使用者提供数据并不困难。WCF中的消息框架是您遇到障碍的地方。您的客户必须正确构建所有内容,以便WCF可以理解您要调用的内容。如果您真的想试一试,这里有一个详细说明所有内容的链接(我链接到最后

windows - 对于超过 32 个内核的系统,如何替换 SetProcessAffinityMask()/GetProcessAffinityMask()?

SetProcessAffinityMask()function接受DWORD掩码,因此它不能在超过32个处理器的系统上正确使用。看起来像SetThreadGroupAffinity()旨在以某种方式解决问题,但我找不到任何有用的代码示例来说明其用法?对于超过32个处理器的系统,如何使用SetProcessAffinityMask()/GetProcessAffinityMask()调整我的程序?有代码示例吗? 最佳答案 首先SetProcessAffinityMask()接受DWORD_PTR。由于32位版本的操作系统不支持>32

c++ - 获取所有 Windows 内核对象及其安全权限

我需要获取所有Win-Kernel对象的访问权限列表;我的工作:for(inti=0;iIfDACL=Null->"allcandoall"IfDACL!=Null->parsingDACL-mask我在正确的轨道上?顺便说一下,我有:~300个没有DACL的句柄~100个带DACL的句柄(在Windows7上测试) 最佳答案 如果您想通过HANDLES进行暴力破解,请不要在9999处停止。遍历所有32位值。或者,您可以枚举所有Usermode-Process-Handles:http://forum.sysinternals.co

windows - 使用 1394 连接调试 Windows XP 内核

主机:Windows7x64guest:WindowsXPSP3x86我在两端都有2个PCI火线卡(SIIG1394安装为德州仪器OHCI兼容IEEE1394主机Controller)。在WindowsXP上,我在boot.ini中添加了以下内容:/debug/debugport=1394/channel=10我重新启动了WindowsXP,OHCI驱动程序变成了黄色(这是预料之中的)。在Windows7(主机)上,我运行WinDBG(x86),打开内核调试,1394,指定channel10并运行它说:Using1394fordebuggingChecking1394debugdriv

Windows内核内存保护

Windows中每个进程的高端内存(0x80000000或0xc0000000)为内核代码保留,用户代码无法访问这些内存区域,如果尝试访问将抛出访问冲突异常。我想知道内核空间是如何保护的?是通过内存分段还是通过分页?我想听听技术解释。非常感谢,迈克尔。 最佳答案 假设您正在谈论x86和x64架构。内存保护是使用分页系统实现的。x86/x64CPU上的每个页表条目都有一个位来指示它是用户页还是主管页。只有使用CPLCPL是“当前特权级别”,有时也称为Ring。Windows仅使用两个环,尽管CPU实现了4个环。环0是Windows称为