busybox 访问amd_iommu的BAR的0地址,可以获取device table的地址,但是这个地址是没有权限访问的
【45】busybox devmem 访问所有内存

【45】busybox devmem 访问所有内存
可以看到demem访问时被限制的,需要重新编译内核打开限制
make menuconfig,然后输入/ 搜索STRICT_DEVMEM,可以看到在kernel hacking有对应配置
【45】busybox devmem 访问所有内存
进入 kernel hacking把
[ ] Filter access to /dev/mem
[ ] Filter I/O access to /dev/mem (NEW)
前面的*点掉(上下键选中,然后敲空格)
【45】busybox devmem 访问所有内存
vim .config查看CONFIG_STRICT_DEVMEM是没有set的,剩下的就是编译内核了
编译内核的方式
【45】busybox devmem 访问所有内存
起来后访问内存还是不行,但是提示从没有权限变成了invalid argument
【45】busybox devmem 访问所有内存
对应这个问题linux/lib/Kconfig.debug有说明
【45】busybox devmem 访问所有内存
我们需要在配置kernel时,关闭CONFIG_X86_PAT=n,同时开启CONFIG_EXPERT
或者直接在cmdline加上nopat的配置 [X86] Disable PAT (page attribute table extension of pagetables) support.
【45】busybox devmem 访问所有内存
重启系统后,可以正常访问内存的地址了
【45】busybox devmem 访问所有内存
我们可以看到devmem读取的和直接hexdump /dev/mem是一样的,只是大小端显示不同。
【45】busybox devmem 访问所有内存

参考
https://lwn.net/Articles/267427/
http://blog.sina.com.cn/s/blog_6f5b220601012xbc.html
https://blog.csdn.net/anzhuangguai/article/details/54316206

相关文章:

  • 2021-06-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-21
  • 2022-03-07
  • 2022-01-08
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-04
  • 2022-12-23
  • 2021-12-06
  • 2022-12-23
相关资源
相似解决方案