ARM MMU 表页映射相关疑惑
ARM 的CPU上电执行的时候最开始执行BootLoader 后续从E2PROM里获取主要执行的代码 再对系统初始化,最后才会执行操作系统的代码由操作系统接管CPU的控制权 ,在系统解压启动之前 会有MMU使能 的操作 arm上的MMU和X86架构下的功能类似也是指向一二级页表进行物理地址与虚拟地址进行映射的,这里就有一个问题:
就是在MMU使能之前 程序例如对一个地址进行操作 LDRpc,=0x10000 中0x10000应该是物理地址(特别是ARM固件0地址处是中断向量表是可以读取到的),那么当MMU启动之后的汇编代码中的 类似指令 LDRpc,=0x20000 此时 的 0x20000是作为物理地址还是虚拟地址? 理论上当MMU启动后是不是你所有的地址都会被映射?那么为什么我在我的HOOK中依旧可以访问到0地址的中断向量表?还是说中断向量表0地址正好被映射在了原来的位置?有点混乱了
但是 在一些固件分析时会出现对虚拟地址的操作 例如 LDRpc,=0xC3200000 (这里 0xC3200000 在控制主板串口输出后 主板会输出对应的信息说事虚拟地址?)那么这个 0xC3200000到底是个啥?
我们实验针对主板固件做的HOOK(在MMU启动后的位置)可以获取到几乎所有地址的信息但是会有部分区间存在无法获取出现异常的情况(类似X86中访问了未挂载物理地址的内存的样子)
页:
[1]