问题标签 [usermode]

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 投票
4 回答
432 浏览

c - C和内存中的资源保护

当我们编译一个 C 程序时,它只是生成一些机器可以理解的代码。这段代码可以直接在硬件上运行,从这个问题可以看出。

所以我的问题是:

  1. 如果 C 程序可以直接在硬件上运行,内核如何处理该程序的资源分配?

  2. 如果编译器生成的可执行文件是纯机器可理解的形式,那么特权模式和非特权模式如何工作?

  3. 如果程序可以不通过内核直接在硬件上运行,那么内核如何管理硬件资源的权限?

0 投票
1 回答
276 浏览

io - printf 是特权指令吗?

由于 I/O 指令是需要从用户模式切换到内核的特权指令,printf 是否也被视为特权指令?执行 printf 指令时是否有模式切换?

0 投票
1 回答
545 浏览

c++ - 安全性:如何在 Qt App 中通过密码显示/隐藏 QGroupBox

我正在尝试准备我的 Qt 应用程序(在 C++ 中)以供不同的用户配置文件使用:root 用户普通用户,所以我想在普通用户模式下隐藏特定的 root 选项(受限 QGroupBox),然后在需要时隐藏一个root用户,他可以输入它的密码(在我已经编码的安全菜单选项中)来显示它们。这可能在同一个 GUI 中吗?我真的被这个安全实施困住了......

那么,当在我之前提到的安全菜单选项中输入用户/密码时,我如何编写一个仅由root 用户显示的隐藏 QGroupBox?如何实施?

Qt 中是否有特定的程序可以做到这一点,或者在其他情况下有什么想法?

非常感谢!

最后更新:我已经使用了@The Badger 的建议,并且有一个可以按我想要的方式工作的第一个版本。

0 投票
1 回答
366 浏览

windows - 未处理的异常处理程序如何改变异常分派?

简而言之,MSDN 描述了用户模式应用程序的异常调度,如下所示:

  1. 调试器收到第一次机会异常的通知(如果附加)
  2. 又名异常处理程序。try/catch被调用(如果可用)
  3. 调试器收到第二次机会异常的通知(如果附加)
  4. 系统关心未处理的异常(通常:终止进程)

此序列不考虑未处理的异常处理程序的存在。当存在未处理的异常处理程序时,异常分派如何变化?

0 投票
4 回答
2065 浏览

kernel - RTOS 中是否存在用户空间/内核空间?

我从各种内核开发人员那里听说,大多数 RTOS 在用户空间和内核空间之间没有任何分离,因此不需要任何上下文切换。

这是真的?

同时,我从其他一些人那里听说这不是真的,VxWorks 或 Integrity 等 RTOS 已经分离了用户模式内核模式。

首先,哪些假设是正确的?

其次,如果这两个假设都是正确的,那么这就提出了一个问题,即 RTOS 供应商何时使用内核空间和用户空间之间的分离,何时不使用?

你能说出一些没有用户模式/内核模式分离的知名 RTOS 吗?

最后,作为一个附带问题,他们如何控制 I/O 操作并避免竞争条件?

0 投票
2 回答
7783 浏览

linux - 如何在没有 usermod 的情况下将用户添加到组?

是否可以在没有 usermod 的情况下将用户添加到组中?我正在使用嵌入式 Linux 3.14.52 并且我没有 usermod 命令行。如果不可能,如何使用 Buildroot 将此命令添加到内核?

0 投票
0 回答
402 浏览

python - Python Ctypes Windows访问冲突 - 读取内存位置

我正在使用 Deviare 用户模式挂钩引擎在 python 中的 COM 上编写应用程序。我要挂钩的函数之一是 CreateProcessA,但我似乎无法将适当的指针从挂钩函数传递给 ctypes kernel32.CreateProcess 调用。我的目标是停止对 CreateProcess 的合法调用,并在暂停状态下重新创建它。

如果需要,函数参数的 Deviare 文档在这里:Deviare - 参数

此外,用于创建进程的 MSDN: kernel32.CreateProcessA

下面是我的 ctypes 调用,在此之前我没有实例化任何东西或使用“args”设置函数定义,在这种情况下是否有必要?

'parameters' 是 Deviare 中的一个对象,包含传递给挂钩函数 (CreateProcessA) 的函数参数

我的错误和一些有用的/键入的参数被传递给新的 CreateProcess 调用:

有时访问冲突的位置在 lpstartupinfo 的开头,有时在它的中间。我不确定为什么,除非我的环境中有其他问题。

我已经确认 LPSTARTUPINFO 和 LPPROCESS_INFORMATION 的位置在调试器中是正确的。

0 投票
2 回答
355 浏览

windbg - 从用户模式转储中获取 CPU 周期

Process Explorer 具有 CPU 时间(低至毫秒)和 CPU 周期的列。对于 WinDbg,我知道该!runaway命令!runaway 7以及更多详细信息,但它仅显示 CPU 时间。

在用户模式崩溃转储中,CPU 周期是否也可用?

进程资源管理器与 WinDbg

我试过的:

  • 我看了看,dt nt!_KTHREAD发现它有一个 CycleTime 属性

    /li>
  • 我试图在 a 中查询该属性!for_each_thread,但 WinDbg 响应它仅在内核模式下可用。

为什么我想要那些 CPU 周期?

我正在为 JetBrains dotTrace 进行培训。它有一个计算 CPU 周期的选项,我想解释一下这些周期的来源。上面的内核结构和 Process Explorer 可能就足够了,但是在用户模式转储中看到它的实时或死后状态会很棒。我用 WinDbg 解释了很多基础知识。

0 投票
1 回答
829 浏览

debugging - 如何在内核调试时让用户模式断点在windbg中命中?

当我进行内核调试时,我无法让用户模式断点在 windbg 中命中。我知道我必须在目标进程的上下文中设置用户模式断点,但这似乎仍然不能可靠地工作。有时它会起作用,但我无法理解是什么变量使它有时起作用,但在其他情况下不起作用。这就是我正在做的事情。

有时断点命中。有时它不会(除非我有证据表明线程已经返回)。这使得调试非常令人沮丧,因为我永远不知道事情是否会奏效。谢谢你的帮助。

编辑:这与线程特定的断点无关,在我的示例中,我只更改线程以获取调用堆栈,因为调用堆栈向我显示了我需要中断的地址。实际上,每当该地址被击中时,我都想中断。

0 投票
1 回答
218 浏览

operating-system - 更改任何寄存器(DR、IR 等)的值是否需要从用户模式切换到内核模式?

1)所以在我正在阅读的书中说,例如更改 IR 寄存器不需要从用户模式切换到内核模式,但我不明白,我怎么知道它是否需要切换?

2)还有其他寄存器呢,比如DR、PSW、PC等,我怎么知道它是否需要切换?

3)最后一个问题是,在某些时候这本书说:改变“内存管理寄存器”的值需要内核模式,但我什至不知道这个寄存器是什么?!