问题标签 [kernel-mode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6491 浏览

kernel - 有没有足够好的小内核来学习 osdev?

我想了解更多关于 osdev 的信息。所以我考虑向其他小内核学习,以便在 osdev 上做得更好。有没有什么好的内核可以学习osdev?当然,它必须是 GPL,这样我才能访问源代码并可以自由修改它。

0 投票
2 回答
3726 浏览

c - 如何从驱动程序(内核模式)显示弹出消息框?

我正在编写一个驱动程序,它需要立即弹出一个对话框来通知用户事件。
(有点类似于 NTFS 的“损坏文件”通知,只是这不是与文件系统相关的驱动程序。)

我知道ExRaiseHardError并且IoRaiseInformationalHardError应该能够做到这一点,但是它们似乎不起作用-它们“成功”返回而实际上没有做任何事情。

我该怎么做(创建用户模式程序)?


代码的用户模式版本(正常工作)如下。

在内核模式版本中,我调用ExRaiseHardError而不是NtRaiseHardError,但方式完全相同。

0 投票
1 回答
2654 浏览

operating-system - 从内核模式返回到用户模式

我对 Unix 内核中的模式切换的理解有点困惑。我在这里给出我的理解并将其打开以供讨论/更正。

在从用户模式转换到内核模式时,处理器会在每进程用户堆栈和每进程内核堆栈之间进行切换。然后每个进程的用户堆栈段选择器和堆栈指针存储在内核堆栈中,然后eip指令指针(用户模式下的返回地址)和其他硬件寄存器被压入内核堆栈

当内核必须返回用户模式时,trapret代码会将存储在内核堆栈中的所有值弹出回硬件寄存器。

trapret 从内核堆栈中弹出值

但是当iret从内核堆栈中弹出 eip 时,应该执行的下一条指令是用户模式下的返回地址。

这发生在没有完全弹出内核堆栈的其他值的情况下。

其余的值 ( %cs, %eflags, %esp, %ss) 如何恢复?

内核堆栈中存在的用户堆栈指针如何弹回 %esp ?

从用户模式转换到内核模式期间的陷阱帧

0 投票
1 回答
836 浏览

hook - SDT 内核模式挂钩

我正在做一个实验以成功地在全球范围内挂钩 API 调用,并且我在某处阅读了有关 SDT(服务描述符表)和内核模式驱动程序的信息。

这种钩子是否适用于驻留在 user32.dll 之类的调用?

0 投票
1 回答
751 浏览

debugging - WinDbg 和 Virtualbox 和机器快照 - 强制内核调试重新连接

因此,virtualbox 的一个不错的功能是拥有可以稍后恢复的快照。

但是,在使用 virtualbox 和 windbg 进行内核调试时,在恢复快照时不会恢复调试会话。

有没有办法强制windbg和来宾机器在恢复机器快照时重新同步并重新启动该内核调试会话,而不必每次都重新启动机器?

0 投票
1 回答
903 浏览

driver - 如何:在用户模式和内核模式之间进行 2 路通信

我编写了一个驱动程序,它从 IRP 缓冲区中提取一个值。现在基于这个关键字,我必须通过或丢弃 IRP。所以我需要从内核模式驱动程序中与数据库进行通信,这并不容易。因此,我正在使用应用程序或 exe 来执行此操作,这将导致我将传递或丢弃 IRP 的真假。

我想将驱动程序与我在客户端应用程序中获取数据的应用程序链接起来。

我考虑过使用可以充当管道的临时文件。

请提出一些建议。

0 投票
1 回答
428 浏览

c++ - 为什么内核模式会给 STL 带来问题?

微软的 STL 在他的演讲中简要暗示了 STL 在内核模式下的交互存在问题。有人可以解释一下他的意思吗?

0 投票
2 回答
641 浏览

driver - 使用什么技术/API/技术进行网络监控?

好的,我正在构建一个实用程序来监视文件系统、注册表和网络活动(进程明智;只有选定进程的活动)。我通过开发一个微过滤器驱动程序完成了文件系统和注册表活动部分。但是,我不确定我应该如何为网络做这件事。我想做的很像 sysinternal 的 TCPView 所做的,但是我只想监视所选进程的 ESTABLISHED 连接。这是我想为每个连接实时获取的内容:

-协议(TCP 或 UDP)

-源端口

-远程IP和端口

-[可选] 从监视开始时开始在特定连接上传输的字节数

我应该用什么?我听说过 LSP,但进一步阅读后我意识到编写功能正常的 LSP 非常困难,更不用说几乎没有任何材料可供他们从头开始学习。此外,它们正在变得过时。问题是我只有大约 2-3 周的时间来学习+编写这个模块。由于时间限制,我当然不想选择 WFP 之类的东西,除非那里有非常好的教程,而且我不是在谈论 MSDN 文档。我不知道这是否可以使用 NDIS 等“轻松”完成。

无论如何,那我该怎么做,我应该把精力放在哪里。我是否应该冒险学习 LSP,或者 NDIS 会完成这项任务,还是其他什么。我现在有点不知所措。帮帮我!

0 投票
1 回答
493 浏览

windows - 内核模式和用户模式驱动程序

我是驱动程序开发的初学者。我想知道内核模式驱动程序和用户模式驱动程序在主内存(主内存的一部分)中的确切位置。以及如何在Visual Studio中创建驱动程序项目时将驱动程序指定为内核模式驱动程序或用户模式驱动程序

0 投票
1 回答
287 浏览

driver - pcapnet 和数据包重定向

是否可以将一个以太网接口上的数据包镜像(而不是重定向/转发)到另一个?无论如何,主机都会处理数据包,并且由于 winpcap 不会作为过滤器插入,我们将无法丢弃数据包,我知道。但我想知道是否可以使用 Winpcap 或 pcap.net 进行数据包镜像?

有点类似于接口桥。使用自定义 NDIS 5/6 过滤器驱动程序是一种选择,但现在不追求。我正在尝试在严格的用户模式下执行此操作,如果我可以使用 C#,我会很高兴。

使用 Win7x64。