如何使用 Python 访问 Ring 0?

2023-12-31

这个答案指出Python中类的命名不是由于特殊特权而完成的,here https://stackoverflow.com/questions/5602439/reasons-behind-naming-in-easy-to-confuse-pythons-classes-such-as-os-and-sys/5602549#5602549让我困惑。

  1. 如何在Python中访问下环?
  2. 低层io是用来访问低层环的吗?
  3. 如果是,我可以使用哪些戒指?
  4. 是声明"This function is intended for low-level I/O."指的是较低级别的戒指还是其他东西?
  5. C 往往是操作系统编程中的重要语言。当Python中有OS类时,是否意味着我可以通过该类访问C代码?
  6. 假设我正在使用奇怪的机器语言代码,并且我想以某种方式理解它的含义。 Python 中有一些工具可以用来分析这些东西吗?如果没有,我是否仍然可以使用Python来控制某些控制奇怪机器语言的工具? [评论中建议的ctypes]
  7. 如果Python与低级特权无关,它是否还提供一些包装器来控制特权?

Windows和Linux都使用ring 0作为内核代码,使用ring 3作为用户进程。这样做的好处是用户进程可以相互隔离,因此即使某个进程崩溃,系统仍能继续运行。相比之下,ring 0 代码中的错误可能会导致整个机器崩溃。

中的一个reasonsRing 0 代码非常关键,因为它可以直接访问硬件。相比之下,当用户模式(环 3)进程需要从磁盘读取一些数据时:

  1. 该进程执行一条特殊指令,告诉CPU它想要进行系统调用
  2. CPU切换到ring 0并开始执行内核代码
  3. 内核检查是否允许该进程执行该操作
  4. 如果允许,则执行操作
  5. 内核告诉CPU它已经完成
  6. CPU切换回环3并将控制权返回给进程

属于“特权”用户(例如 root/管理员)的进程在环 3 中运行,就像任何其他用户模式代码一样;唯一的区别是第 3 步的检查总是成功。这是一件好事,因为:

  • root 拥有的进程可能会崩溃,而不会导致整个系统崩溃
  • 许多用户模式功能在内核中不可用,例如可交换内存、私有地址空间

至于在较低的环中运行 Python 代码 - 内核模式是一个非常不同的环境,并且 Python 解释器根本不适合在其中运行,例如分配内存的过程是完全不同.

在您提到的另一个问题中,两者os.open() and open()最终使open() http://linux.die.net/man/2/open系统调用,检查是否允许进程打开相应的文件并执行实际操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Python 访问 Ring 0? 的相关文章

随机推荐

  • 在 Windows 应用程序中实现“记住我”复选框?

    您好 我正在创建一个 Windows 应用程序 WPF 该应用程序将在访问 1 个数据库的几个工作站中运行 我已经通过登录系统实现了登录表单My User CurrentPrincipal 现在 我想在登录表单中实现 在这台计算机上记住我
  • Azure Application Insights 不跟踪 SQL 查询

    将 Web 应用程序升级到 Net Core 3 1 后 我们无法再看到在 Application Insights 中执行的实际 SQL 查询 由于 EF Core 3 x 存在一些严重的性能问题 我们将 EF Core 保留在 2 2
  • Facebook OAuthException:无法解密访问令牌

    我有一个正在运行的应用程序 它代表用户向他们的一位朋友发送预定的墙贴 该应用程序在相当长的一段时间内运行良好 但最近有一些用户报告消息未发布 日志显示 OAuthException The access token could not be
  • 将 UDT 子类型转换为超类型

    我在 Oracle 18c 中使用名为 ST GEOMETRY 的用户定义类型 UDT ST Geometry 存储类型 https desktop arcgis com en arcmap latest manage data using
  • 如何将“~/default.aspx”转换为“http://www.website.com/default.aspx”C#?

    我知道 ASP NET 自动执行此操作 但由于某种原因我似乎找不到该方法 帮助任何人吗 就像标题说的那样 如果我执行 Response Redirect Default aspx 它可以工作 但我不想重定向该网站 我只想要完整的网址 谁能帮
  • SQL 查询获取具有列最大值的表的行详细信息

    我有两张桌子 表格1 Num 1 2 3 Table 2 Num Date Amount 1 12 31 30 1 12 30 31 1 12 29 20 2 12 31 100 2 12 30 90 3 12 31 12 4 11 1 1
  • 烤宽面条自动编码器:如何使用解码器部分?

    假设我在烤宽面条中有一个自动编码器 有两个编码层和两个 InverseLayers 作为解码器 input InputLayer l1 Conv1DLayer input l2 DenseLayer l1 decoder part l2p
  • capybara-webkit:自动保存 RSpec 测试失败的屏幕截图

    当使用 capybara webkit 和 Rspec 测试失败时 如何自动保存 html 和屏幕截图 当 RSpec 测试失败时如何执行回调 加分点 如何避免出现以下错误 Capybara Driver Webkit WebkitInva
  • JS mouseenter 触发两次

    问题是关于事件 mouseenter 被触发两次 代码在这里 http jsfiddle net xyrhacom http jsfiddle net xyrhacom HTML div class elt text1 div class
  • Java、JPA、Glassfish、无效资源:jdbc/__default__pm

    我使用 Glassfish 3 1 2 2 构建 5 JPA EclipseLink MySQL 我通过 Glassfish 管理面板创建了 MySQL 池 从 GF 管理面板 Ping 到 MySQL 正常 我使用 persistence
  • 从 iframe 触发 jQuery 事件

    这是场景 我在 iframe 内发生了事件 到目前为止一切都运行良好 我刚刚遇到了一个问题 我想将事件从 iframe 分派到父级 我用它来触发 iframe 中的事件 body window parent document trigger
  • CMake:找到用 MinGW/MSYS 构建的 wxWidgets?

    我使用 MinGW 编译了 wxWidgets 2 8 12 为了实际进行构建 我通过 MSYS shell 调用了随 wxWidgets 一起分发的 autotools 构建文件 使用安装前缀为 H MinGW libs 这样做的结果是我
  • Android 拼写检查器设置意图

    在 Android 中 我可以启动键盘与输入设置对话框使用ACTION INPUT METHOD SETTINGS intent getPresenter startActivity new Intent Settings ACTION I
  • 如何找出 R 函数调用中使用了哪些参数值?

    我想知道是否有一个 Base R 函数来提取特定函数调用中使用的参数值 例如 对于每个对象x y and z下面 是否有一种通用的方法来提取参数名称 例如 n sd rate scale 正在使用和值 例如 1e4 for n 由用户或系统
  • Java:如何通过管道将InputStream传输到标准输出?

    有没有一种简单 因此快速 的方法来实现这一点 基本上只需要一些输入流 可能类似于socket getInputStream 并让流的缓冲区自动重定向到标准输出 没有简单的方法可以做到这一点 因为InputStream有一个拉式界面 当Out
  • 为什么重写方法不能抛出比被重写方法更广泛的异常?

    我正在阅读 Kathe Sierra 的 SCJP 6 书 并发现了关于在重写方法中抛出异常的解释 我完全没听懂 谁能给我解释一下吗 重写方法不得抛出新的已检查异常 或者比被重写方法声明的更广泛 例如 一个 声明 FileNotFoundE
  • PHP implode 数组生成 mysql IN 标准

    我有一个如下所示的函数 public function foo cities array anaheim baker colfax db global instance of Zend Db Adapter Pdo Mysql query
  • 模拟用户输入

    android 可以模拟用户输入吗 例如 有一些服务或一些线程将在后台工作并启动一些模拟用户输入的东西 因此如果我们在主屏幕上并且发生了模拟输入 假设单击 那么如果模拟的坐标是应用程序应该启动单击指向主屏幕上的某个图标 或者如果模拟输入指向
  • 微调器中的默认文本填充是什么

    我有一个微调器和一个风格类似于微调器的文本视图 我想对齐两者中的文本 但我不知道微调器中的文本有多少填充 你可以找到一件事安卓风格 https android googlesource com platform frameworks bas
  • 如何使用 Python 访问 Ring 0?

    这个答案指出Python中类的命名不是由于特殊特权而完成的 here https stackoverflow com questions 5602439 reasons behind naming in easy to confuse py