我有一个问题,关于我现在正在读的一篇论文,这是一个使用自哈希机制攻击一些抗篡改软件的演示。这种自散列之所以有效,是因为作者假设已执行的代码与散列代码相同,这是正确的,除非对处理器操作内存的方式进行某些操作。
在本文中,有一句令我困扰的句子:“Aucsmith的IVK和校验和系统中使用网络的哈希的一个关键(隐式)假设是处理器操作,使得D( x ) = I(x),其中D(x)是从内存地址x读取的”数据“的位串结果,而I(x)是从x中”取取“指令”的“指令”的位串结果。
你如何说明D(x)和I(x)之间的区别?读取的数据和获取的指令有什么区别?
谢谢你的帮忙
发布于 2017-10-31 13:26:18
这些操作的不同之处在于它们发生的时间和数据在使用前存储的位置。大多数处理器都有用于指令的专用缓存。这可能意味着数据被从主存中取出两次:一次从数据缓存中计算哈希,另一次进入指令缓存。
我现在找不到它,但一年前,我读到一种通过导致这两个缓存之间的缓存不一致而将恶意代码隐藏在Intel处理器上的方法。处理器将执行恶意代码,但任何其他读取与仅数据相同的内存的工具都会看到良好的代码。这是一种在ARM芯片上实现这一点的方法。。
https://stackoverflow.com/questions/47036346
复制相似问题