内核代码的物理地址

时间:2017-09-22 01:49:38

标签: linux memory linux-kernel x86-64

this post表示内核页面无法解决。

然后我想知道当我禁用KASLR时,内核代码的物理地址总是可以从虚拟地址计算出来(特别是在x86_64中)?

假设配置中的PHYSICAL_START为0x1000000,并且< _text>的起始虚拟地址为部分是0xffffffff81000000 我认为每个内核代码的物理地址是(vaddr - 0xffffffff81000000 + 0x1000000)

这总是如此吗?如果没有,当我使用defconf时(禁用KASLR除外)是否正确?

更新: 我出于研究目的修改QEMU本身。我必须阅读客户内核代码指令。我只使用vmlinux图像(意思是,我不加载其他模块) 我有虚拟地址,我试图使用这个虚拟地址读取内存。 出于某种原因,我无法读取带有虚拟地址的内存,但我成功读取了一个带有物理地址的内存(由我的手计算)。
所以,如果我能以上述方式计算物理地址,我认为这种方式可能是一种捷径(即使它不是一个好主意)。
我知道有监视器和gdbserver,它们运行良好。但我不知道他们是选择。

0 个答案:

没有答案