0

我有一个关于我现在正在阅读的论文的问题,该论文演示了使用自散列机制对某些防篡改软件进行攻击的演示。这种自散列是有效的,因为作者假设执行的代码与散列代码相同,这是正确的,除了针对处理器操作内存的方式进行的一些操作。

在论文中,有以下句子让我感到困扰:“Aucsmith 的 IVK 中的散列和使用网络的校验和系统的一个关键(隐含)假设是处理器运行使得 D(x) = I(x),其中 D (x) 是从内存地址 x 中“读取数据”的位串结果,I(x) 是从 x 中“取指令”相应长度的位串结果。

您如何说明 D(x) 和 I(x) 之间的区别?数据读取和指令获取有什么区别?

谢谢你的帮助

4

1 回答 1

1

这些操作的区别在于它们发生的时间以及使用前数据的存储位置。大多数处理器都有专门的指令缓存。这可能意味着数据从主存中提取两次:一次进入数据缓存以计算哈希值,另一次进入指令缓存。

我现在找不到它,但一年前我读到了一种在英特尔处理器上隐藏恶意代码的方法,它会导致这两个缓存之间的缓存不一致。处理器将执行恶意代码,但任何其他读取与纯数据相同的内存的工具都会看到好的代码。这是在 ARM 芯片上完成此任务的一种方法

于 2017-10-31T13:26:18.333 回答