问题标签 [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 投票
2 回答
515 浏览

assembly - How to program in 16 bit protected mode with more than 64kb of data?

I want to write some code for the 16 bit protected mode, specifically a simple operating system with some programs. I know this sounds silly and it probably is, but I'm interested in understanding how to write programs under these constraints.

I'd like to know what kinds of conventions have been employed in the various operating systems working in 16 bit protected mode (e.g. OS/2 and Win 3.1). What ABI did they use? How are far pointers passed around? Were there multiple ABIs for different code models?

To clarify, I know what far pointers are and how they are used on the API level. What I'd like to know is how this works on assembly level. Are segments for far pointers passed on the stack? Are there any special conventions?

0 投票
1 回答
693 浏览

assembly - 保护模式,设置段寄存器

我最近在简单的操作系统开发中使用 gnu-assembler。我正在使用下面的代码将 CPU 切换到保护模式。为了做到这一点,我将 GDT 设置如下并执行远跳转到给定标签 wit 0x08 作为 GDT 偏移量(以设置 CS)。之后CPU没有自行复位jmp,但是mov跳转到后没有一条指令被正确执行leaveToKernelmov我说设置 DS 和 SS 失败的原因是这个 qemu print ( info registers):

有人可以帮我理解和解释这种行为吗?提前致谢

用于将 CPU 切换到 p 模式的代码(GAS 语法):

0 投票
1 回答
386 浏览

x86 - 为什么不能写入 BIOS 以在保护模式下运行?

是否仍在使用基于 8088 的计算机或 80286 之前的计算机?如果那些旧处理器不再使用,为什么还要存在这种“实模式首次启动”的向后兼容特性?为什么处理器不能直接在保护模式下运行并避免所有兼容性黑客等?为什么不能将 BIOS 写入直接在保护模式下运行?

0 投票
1 回答
541 浏览

assembly - 中断描述符表门

我编写了这段代码来创建一个示例 IDT 并将其加载到正确的寄存器中。我检查了英特尔系统编程指南以了解正确的结构,但我无法让中断工作。在 Bochs 中运行内核代码并触发中断时(使用__asm__ ("int $32");我得到的日志显示:

当然,这会导致 CPU 复位,因为未处理中断。要加载 IDT,我使用以下内容:

这被称为:

数据结构:

和示例中断例程:

我检查了 IDT 寄存器是否在 quemu 中加载了指向 IDT 的 ptr,并且确实如此。我在被 GRUB 启动后立即加载 IDT(设置了保护模式并且 GDT 选择器跨越整个 RAM)。我认为我错误地注册了中断例程,但我可以指出我的代码中的任何错误。

0 投票
1 回答
285 浏览

c - 关于 GDT 和流程

GDT如何反映在进程的线性空间上(如果我理解正确,GDTR包含页面和偏移量)。?或这个问题的另一个版本:GDTR 对于每个进程都是唯一的。?

0 投票
1 回答
762 浏览

c - 在 c 内核保护模式下不获取键盘输入

我正在按照James Molloy 的教程制作 C 和 32 位汇编操作系统,直到 IRQ 和 PIT 步骤,我正在尝试获取键盘输入,我尝试将此代码添加到教程的代码中,但我无法正确处理。

键盘.c:

main.c:内核

所有其他文件都相同。它运行正常,但不打印输出,我不知道为什么:(我正在使用 qemu 运行它。

它打印 hello world 但不打印击键

0 投票
2 回答
863 浏览

assembly - 如何在保护模式下设置堆栈段?

这个问题是我在 GDT 下使用选择器在 x86 保护模式下定义了一个数据和堆栈段。当 jmp 进入保护模式时,似乎我可以访问数据部分,但在推送 eax 时会崩溃。请参阅以下代码:

描述符.asm:

定义.asm:

0 投票
1 回答
99 浏览

actionscript-3 - Firefox 保护模式和 as3 flash player 的麦克风错误?

我正在 as3 中为 flash 构建一个 cam 发布客户端。它快完成了,但我遇到了一些奇怪的问题。在所有浏览器中,它都像一个魅力,但经过两天的调试后,我发现 Firefox 的“保护模式”会使应用程序崩溃。

问题如下。我有两个下拉菜单。一个用于相机,一个用于麦克风。当我更换相机时,它会选择它并显示预览。我可以随意多次这样做。麦克风下拉菜单有所不同。两次选择后,应用程序崩溃。activityLevel 指标也没有按预期工作。在其他浏览器中没问题。

我发现当我关闭保护模式时它工作正常。现在我想让应用程序也以保护模式运行,因为这是默认行为。

我找不到问题。我的麦克风代码如下。

该应用程序使用 flex 构建并使用 mxmlc 编译。

当我将 setLoopBack 设置为 false 时,应用程序不会崩溃,但不会触发 activityLevel 并且声音不起作用。我使用类似的方法来选择相机,这个方法效果很好。

Firefox 中的保护模式是否有一些特殊限制?我找不到一个?

0 投票
1 回答
37 浏览

android - Android 下载的 HTML 内容不应使用文件管理器/通过 USB 连接处理

我正在开发一个 android 应用程序,它从 API 下载内容作为 zip 文件并将其解压缩到应用程序的资产文件夹中。然后使用应用程序中的 Web 视图可以加载该内容。

如何防止用户直接访问提取的文件夹(使用文件管理器)并且只允许用户通过应用程序访问文件夹?

0 投票
1 回答
930 浏览

pdf - 在启用 Adob​​e Reader“保护模式”的情况下通过命令行打印到网络打印机时出现问题

我们发现在启用 Adob​​e“保护模式”的情况下,几乎不可能通过 Adob​​e Reader 命令行开关打印到网络打印机。当尝试使用 Adob​​e 文档中提供的命令行参数打印到本地计算机上未安装的打印机(可通过网络访问)时,会出现这些问题。当我们关闭“保护模式”时,我们可以使用命令行打印到任何网络打印机,所以我们知道这必须通过正确的策略配置来实现。

我们对说我们的打印机信息“错误”的日志条目特别感到困惑,因为我们在命令行中提供了正确的信息,并且在“保护模式”关闭的情况下,不需要提供端口或驱动程序:

完整的日志条目如下(其中 [unc_path_to_printer] 是我们网络上真实打印机的 UNC 路径,[username] 是 windows 用户名):

命令行: "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /s /t "C:\temp\tmp_201510141141420.pdf" "[unc_path_to_printer]" "RICOH Aficio SP 4100N PCL 6" "[port_for_unc_printer]"

操作系统: Windows 7

Adobe Reader 版本:DC(与 11 相同的体验)

我们已按照在线文档配置保护模式,并完成了以下操作:

  • HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\DC\Privileged "bProtectedMode" = 1,我们可以确认保护模式确实开启了
  • HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\DC\Privileged “tBrokerLogfilePath” = C:\Users[user]\AppData\Local\Temp\AdbeReaderBroker.log,我们可以查看日志文件
  • HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Adobe\Acrobat Reader\DC\FeatureLockDown “bUseWhitelistConfigFile” = 1,我们可以通过日志确认正在读取白名单文件:C:\Program Files (x86)\Adobe\Acrobat Reader DC \Reader\ProtectedModeWhitelistConfig.txt

  • HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\DC\TrustManager\cTrustsedSites\cSilentPrint "t1" = [unc_path_to_printer]

我们的 ProtectedModeWhitelistConfig.txt 包含:

关于 ProtectedModeWhitelistConfig.txt,我们现在允许所有文件;一旦它起作用,我们将进一步限制它。我们现在允许 reg 条目来抑制以下我们也不完全理解的日志错误:

我们正在尝试做的事情是否可能?我们将不胜感激有关我们配置的任何反馈,特别是如果它有助于我们完成工作流程(在启用保护模式的情况下打印到网络打印机)。

谢谢!