- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经有几年没有编程了,但是由于对 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/
设备地址、物理地址和虚拟地址有什么区别? 实际上我正在尝试在驱动程序中使用 mmap,我坚持这个概念。 最佳答案 documentation说: The kernel normally uses vi
简而言之,根据我对内存管理的理解,处理器会产生虚拟地址。这些地址由 MMU 使用每个进程的地址表转换为相应的物理地址(在需要时,中间有 TLB 和页面错误)。 我的问题是处理器是否总是产生虚拟地址?在
如何存储一个人的邮寄地址?假设两个不同的用户输入的信息不同,那么如果一个用户说 123 Main Street, City, State-ABV,而另一个用户刚输入 City, State ABV。
我知道的唯一方法是在 nic 的注册表中添加“NetworkAddress”键/值对。通过这种方法对我来说太难实现了。还有其他方法吗? 我使用 Windows 窗体构建了一个示例应用程序,但 setM
我想将物理内存写入文件。内存本身不会再被触及,因此我想使用 O_DIRECT 来获得最佳的写入性能。 我的第一个想法是打开 /dev/mem 并映射内存并将所有内容写入一个文件,该文件使用 O_DIR
我是一名优秀的程序员,十分优秀!