问题标签 [protected-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.
keyboard - x86 程序集上的保护模式键盘访问
我正在为我正在开发的一个非常基本的内核处理键盘输入,但我完全被卡住了。我似乎无法在网上找到任何可以显示我需要知道的信息的信息。
我的内核现在在保护模式下运行,所以我不能使用实模式键盘例程而不跳转到实模式并返回,这是我试图避免的。我希望能够从保护模式访问我的键盘。有谁知道如何做到这一点?到目前为止,我发现的唯一一件事是它涉及直接使用输入/输出端口与控制器对话,但除此之外,我感到很困惑。当然,这不是经常出现的事情。通常,Assembly 教程假定您在下面运行操作系统。
我对 x86 程序集非常陌生,所以我只是在寻找一些很好的资源来使用受保护模式下的标准硬件。我正在使用 NASM 编译程序集源代码,并将其链接到使用 DJGPP 编译的 C 源代码。有什么建议么?
assembly - 有人可以解释这个直接组装的 x86 JMP 操作码吗?
在学校,我们一直在使用引导程序来运行没有操作系统的独立程序。我一直在研究这个程序,当启用保护模式时,通过直接将操作码和操作数组装为程序中的数据来执行远跳转。这是给 GNU 汇编器的:
首先,为什么要这样做(而不是指令助记符)?
我一直在查看英特尔手册,但仍然对代码感到有些困惑。特别是在第 2A 卷第 3-549 页中,有一个操作码表。相关条目:
实际的操作码很明显,但第一个字节 0x66 让我感到困惑。参考英特尔手册中的表格, cp 显然意味着后面会跟着一个 6 字节的操作数。接下来的两行显然是 6 个字节。0x66 编码一个“操作数大小覆盖前缀”。这和表中的cp有什么关系?我原以为cp会有一些十六进制值,但是有这个覆盖前缀。有人可以帮我解决这个问题吗?
这是来自 od 的转储:
TARGET_ADDRESS 被定义为 0x00010000。
我也对最后两个字节的重要性感到困惑。然而,这似乎完全是另一个问题。现在已经很晚了,我已经盯着代码和英特尔手册看了好几个小时,所以我希望我能明白我的意思。
感谢您的关注!
assembly - x86 程序集中是否有任何指令仅存在于 64 位模式下?
一些旧的 x86 指令在 64 位模式下未定义。例如LDS
,LES
和, 或( ) 和( ) 指令LSS
的短操作码。INC r16
40 + rw
INC r32
40 + rd
是否有任何指令仅在 64 位模式下定义,而不在 32 位保护模式下定义?
编辑: 上下文是 x86 处理器的开发。我想确保我符合规范。
security - 如何访问其他进程的内存?
我认为一个进程无法读取其他进程的内存。但是我很震惊地看到一个名为“ WinHex ”的应用程序具有“RAM 编辑器”并且能够访问整个内存。在所有的过程中。
这怎么可能?它甚至可以修改其他进程的内存。这不会变得恶意吗?
c# - 如何在 IE 保护模式下访问 AppData(来自托管 BHO)
我正在用 C# 编写一个 IE 扩展(BHO)。在保护模式下运行时(IE 的新 UAC 兼容模式强制所有扩展以低完整性运行),它会失败,因为它无法访问 appdata 文件夹中的 user.config。
是否有某种方法可以标记低完整性进程可以读取文件?
如果做不到这一点,是否有某种方法可以强制 BHO 以中等完整性运行?
如果做不到这一点,是否有某种方法可以在指向 AppData 中的中等完整性文件的低完整性文件夹中创建低完整性符号链接?
如果做不到这一点,是否有某种方法可以强制应用程序使用 LocalLow 文件夹中的 user.config 文件?如何在 .net 中获取此文件夹的路径(未在 Environment.SpecialFolder 下列出)?我是否能够在不丢失所有 user.config 数据的情况下退回运行 XP 或关闭保护模式的用户?
windows - Windows保护模式下的int 13h?
我们可以在 Windows 操作系统中使用 Int 13h(直接磁盘读/写)还是 Windows 保护模式不允许我们,如果可以,是否有工作循环?提前致谢。
informix - INFORMIX-SQL (SE) 4.10DC1 加载 PSTARTSQL.EXE 的保护模式问题
我试图在 MS-DOS 6.22 上启动 ISQL 4.10DC1,但似乎无法加载 PSTARTSQL.EXE,它显示 DOS16M 错误 [6]:内存不足。我有 DEVICE=C:\DOS\HIMEM。 SYS 作为我在 CONFIG.SYS 中的第一行并正确设置所有环境变量,包括 DOS16M=3。有人对这个版本的 ISQL 有任何经验吗?..有人有这个旧版本的附加文档吗?
.net - 在保护模式下从 IE 扩展中写入 Windows 事件日志 - 失败并拒绝访问
在启用保护模式的 Windows 7 上的 Internet Explorer 中运行的 BHO 中,我正在尝试写入 Windows 事件日志。我正在写一个已经存在的源,它在应用程序日志中,所以我不明白为什么会被阻止。但是,我的调用System.Diagnostics.EventLog.WriteEntry("MySource", "Some message")
失败并出现 InvalidOperationException,并显示消息“无法打开源 'XXX' 的日志。您可能没有写入权限。”。堆栈跟踪表明它位于EventLog.OpenForWrite(String currentMachineName)
.
关闭保护模式使其工作正常。
在保护模式下不允许这样做的任何原因,以及我可以将我的 BHO 注册为允许写入事件日志或以其他方式使其工作的任何方式?
根据这篇文章,对 OpenForWrite() 的调用会导致对 的调用UnsafeNativeMethods.RegisterEventSource(this.machineName, this.sourceName);
,但该文档并没有让我进一步了解。
我正在使用.net 2.0
谢谢。
assembly - 实模式 BIOS 例程和保护模式
我正在做一些操作系统实验。到目前为止,我所有的代码都使用实模式 BIOS 中断来操作硬盘和软盘。但是一旦我的代码启用了 CPU 的保护模式,所有实模式 BIOS 中断服务例程都将不可用。怎么可能IR/W硬盘和软盘?我现在需要做一些硬件驱动程序吗?我该如何开始?这是操作系统如此难以开发的原因之一吗?
我知道硬件都是通过读取和写入某些控制或数据寄存器来控制的。例如,我知道硬盘的命令块寄存器范围从 0x1F0 到 0x1F7。但是我想知道这么多不同硬件的寄存器地址在PC平台上是否相同?还是我必须在使用它们之前检测到这一点?如何检测它们?
由于我不确定如何在保护模式下读/写软盘或硬盘,所以我现在必须使用 BIOS 中断将所有必要的内核文件从软盘加载到内存中。但是,如果我的内核文件超过了实模式 1M 空间限制,我该怎么办?
对于任何回应,我深表感谢。
更新
我依稀记得有一种方法可以先切换保护模式,然后再切换回实模式。然后我们可以在保护模式下使用 BIOS 例程。也许我记错了。有人记得对吗?
c# - 如何降低 WCF 命名管道的完整性
我有一个用 C# 编写的 Internet Explorer 加载项,它通过 WCF 命名管道与 .NET 桌面应用程序通信。桌面应用程序为 netNamedPipeBinding 创建 ServiceHost,并且 IE 加载项的每个实例都创建一个 ChannelFactory 来与应用程序通信。在 Windows XP 下一切正常,但在 Windows 7 中 IE 的保护模式下会抛出异常。
System.ServiceModel.CommunicationException:无法连接到端点“net.pipe://localhost/MyApp.MyID”。---> System.IO.PipeException:'\.\pipe...guid...' 存在管道端点,但连接失败:访问被拒绝。(5, 0x5)
在保护模式下运行加载项是我必须支持的方案。我的理解是,如果我降低命名管道的完整性级别,那么我的 IE 插件将被允许通过它进行对话。我的问题是如何做到这一点。我有使用 WCF 的设置,并且希望保持这种方式。我可以让 WCF 创建具有较低完整性级别的命名管道吗?我要编写什么代码来实现这一点?