问题标签 [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.

0 投票
1 回答
219 浏览

assembly - 不能无错误跳转

我有问题。最近几天我在玩 GDT、A20 和保护模式。我有这个简单的 GDT 代码:

如您所见,它非常简单。这是我的 A20 启用:

第二阶段代码的一部分:

我试着一步一步来。我可以成功地将 GDT 加载到它的寄存器中,启用 A20 并进入保护模式。但是当我尝试时jmp 0x8:stage3,我从 VirtualBox 收到错误:

(虚拟机状态现在是'Guru Meditation')有人知道问题出在哪里吗?我应该怎么做才能让它工作?请帮忙。

0 投票
2 回答
676 浏览

virtualization - Type-1 VMM 和 Ring 1

最近,我正在做关于虚拟化的功课。我的问题是,VMM 如何将控制权转移到来宾内核并在 Ring 1 中运行该代码?

Type-1 VMM:这是经典的陷阱和仿真 VMM。VMM 直接在硬件上运行,在 Ring 0 中充当“主机操作系统”。来宾内核和来宾应用程序在 VMM 上运行,分别在 Ring 1 和 Ring 3 中。

  1. 当来宾应用程序进行系统调用时,它将捕获到 Ring 0 VMM,(CPU 旨在执行此操作)。

  2. 然后 VMM 将检测到这是一个系统调用,然后将控制权转移到来宾内核系统处理程序并在环 1 中执行它。

  3. 完成后,来宾内核执行 syscall-return,这是一个特权调用,它将再次陷入 VMM。

  4. VMM 然后在 ring 3 中真正返回到访客用户空间。(CPU 也被设计为这样做。)

我的问题是关于第 2 步的。VMM 如何将控制权转移到来宾内核并强制 CPU 响铃 1?这不可能是一个简单的“调用”,因为那时来宾内核代码将在环 0 中运行。它必须是某种“系统调用返回”或一些特殊的上下文切换指令。

你有什么想法吗?谢谢!

0 投票
1 回答
1547 浏览

assembly - 远跳到保护模式后的 GPF

在使用 GRUB 作为我的引导加载程序进行了几周的工作后,我决定自己动手做,这样我就可以了解它们是如何工作的。我在互联网上找到了 Brokenthorn 的教程(目前在http://www.brokenthorn.com/Resources/OSDev9.html上)。当我尝试切换到保护模式时,cpu 硬件在远跳后重置。我正在运行 bochs v. 2.6。

这是我的第二阶段引导加载程序(几乎是教程的副本,因为我认为它可以解决我的问题 - 它没有)

我的 GDT:

这是我尝试此代码时 bochs 给出的错误:

我能做些什么来解决这个问题?

0 投票
1 回答
1078 浏览

assembly - 尝试启用保护模式时的引导循环

我正在编写一个基本的引导加载程序,直到我有某种环境,我可以在其中编写一个简单的 C 程序,将其写入硬盘(无文件系统)并运行它。这就是我想做的。

这是我到目前为止所做的。

阶段1:

  1. 设置堆栈和段寄存器
  2. 将视频模式更改为 640x480x8
  3. 将下一个扇区读入内存
  4. 远远跳到它

第 2 阶段:

  1. 再次设置堆栈和段(我需要再次这样做吗?)
  2. 设置 GDT(这部分让我很困惑 - TBH 我只是复制/粘贴)
  3. 启用 A20 门
  4. 进入保护模式

我之前已经成功进入保护模式,但由于某种原因现在我不能。当我尝试时,Bochs 进入引导循环,但据我所知,该代码与有效的旧代码相同。

我尝试注释掉启用 A20 和 GDT 的调用,但这并没有阻止引导循环。

我在 PasteBin 上有我的整个引导加载程序代码,但我也会在这里放一些东西:


设置堆栈:

启用 A20:

进入保护模式:

GDT代码有点啰嗦,不是我自己写的。但是,正如我所说,不加载 GDT 并不能阻止以后的引导循环。

顺便说一句...如果您对我的引导加载程序有任何一般性评论(这是我的第一个),请随时提及。

0 投票
0 回答
288 浏览

java - 将 URL 从 InternetExplorer 拖放到 sojamo/Processing 的链接传递

我无法将 IE 地址栏中的地址放入处理应用程序中,即使是 sDrop 附带的简单 DropBasics.pde 示例也是如此。我认为问题与 Internet Explorer 的保护模式有关。MSDN 上有一篇关于允许在您的应用程序中进行拖放操作的信息性文章,但我什至无法为处理应用程序制定简单的设置。例如,该文章中的示例注册表设置是

AppName="contose.exe"

AppPath="C:\%USERPROFILE%\ApplicationData\Contoso"

策略=(DWORD) 00000003

但是用于处理的正在运行的 exe 是 javaw 并且以下似乎不起作用

AppName=javaw.exe

AppPath=C:\Windows\SysWOW64

策略=dword:00000003

有没有人成功注册处理应用程序以接受从 IE 地址栏中删除的链接?如果是这样,它是如何完成的?

0 投票
0 回答
111 浏览

c# - IE 中的保护模式打开时无法获取任何事件

我正在用 Winform 编写一个 IE 插件(工具栏),我需要获取鼠标位置和键盘按键

当 IE 处于保护模式时,我没有收到任何 Windows 事件,

即使protected override void OnLostFocus(EventArgs e)是不工作!

有没有办法在保护模式下从 IE 获取事件?

没有保护模式一切正常!

请不要参考我这篇文章: 了解和在保护模式下工作 Internet Explorer

0 投票
1 回答
857 浏览

assembly - GDB 实模式到保护模式,动态分解

我正在尝试调试一段 MBR 代码,其中包含一些上下文切换。我的 asm 布局默认设置为 16 位分解指令。

当我将上下文设置为保护模式时出现了我的问题,在这种情况下,asm 窗口中的指令将变得疯狂/毫无意义(处理器仍将运行正确的 c 指令)。

我知道set architecture i8086/i386命令。但它们仅在我连接到虚拟机之前工作。我不能“即时”改变架构。

注意:我想来回切换上下文,所以我需要查看正确的说明。

总而言之,是否可以切换架构并刷新 asm 窗口中的指令?(有一些奇怪的命令?奇怪的工作方法?)

0 投票
1 回答
138 浏览

protected-mode - GDT中DC位的作用是什么?

这是我的代码:

当 gdt 中的 dc 位(访问字节的第三位)为零时,它可以正常工作。我想知道为什么当它是 1 时不工作?

我知道 dc 位是数据选择器的 Direction 位,当它为 0 时,该段长大,当它为 1 时,该段长大。但不知道长大和长大到底是什么意思。当我想使用堆栈时,成长和成长对我来说意味着。(ESP++和ESP--)

0 投票
1 回答
1170 浏览

c# - 在某些计算机上使用虚拟化路径的临时目录

在我的 Silverlight 应用程序中,我使用常规 SaveFileDialog 提示用户保存一些文件。

问题是在某些 Windows 7 计算机上,如果用户在保护模式下使用 IE,并尝试保存到例如桌面上,则保存路径最终如下所示:

有谁知道我在哪里可以找到指示此路径将在 Windows 上使用而不是常规路径的标志或值?

谢谢

0 投票
2 回答
945 浏览

assembly - 如何找出 GDT 的内容

我正在分析一个反汇编的dll并卡在了线上

我想找出用这条指令写入 ebx 的数据的确切物理地址。gdb 告诉我fs = 0x53.

我已经发现地址取决于模式(受保护的或真实的),而且我很确定 CPU 处于保护模式(请参阅*)。所以段 fs 的开始应该存储在 GDT 中的某个地方,对吗?我还找到了 的地址GDT-register (0x009bd5c0007f),但是 gdb 不允许我访问或读取寄存器,所以我不知道如何找出 fs 的物理地址(因此,fs:[00000004h])。

有人可以帮我吗?

我使用了指令smsw ax,然后eax是 0x280031。所以最后一位是1,表示保护模式。我做对了吗?