gpt4 book ai didi

c - 关于 Spectre 示例,虚拟/物理地址如何工作?

转载 作者:太空宇宙 更新时间:2023-11-04 03:19:06 25 4
gpt4 key购买 nike

我已经有几年没有编程了,但是由于对 Meltdown 和 Spectre 的大惊小怪,我安装了 VS2017 并从这个 pdf 编译了 Spectre 示例:https://spectreattack.com/spectre.pdf

但是我不知道 Spectre 示例在命令行上采用的地址是如何工作的?

我修改了代码以输出 secret 字符串的指针地址,并在 Native Tools Shell 中使用 cl 进行编译,它输出如下内容:

00007FF6CF2210F0

在示例的命令行中输入此地址,它会正确输出 secret 字符串。

但是如果我用类似的字符串编写一个简单的程序并输出那个地址然后将它提供给 Spectre 示例,在另一个 shell 中,我没有得到正确的字符串。

我一直在阅读有关虚拟地址与物理地址以及页面和偏移量的信息,但我完全迷失了。

那么问题是:

在 C 代码中,您将如何计算指针的物理地址?

最佳答案

How would you in C code calculate the physical address of a pointer?

我想你是在问如何计算指针值表示的物理地址,而不是存储指针值的物理地址。无论如何,后者只是归结为前者。

但就 C 语言本身而言,您不要这样做。 C 从一开始就不承认物理内存和虚拟内存之间的区别,也没有必要这样做。这种区别是操作系统级别对硬件支持的关注。因此,任何能够完成您所描述内容的技术都依赖于 C 实现和执行环境的细节。

Spectre 设法打破(部分)由虚拟内存提供的进程隔离可能是它最可怕的地方。

关于c - 关于 Spectre 示例,虚拟/物理地址如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48189240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com