Linux内核6.6 内存管理 (17)map_kernel/map_mem/kaslr

1.map_kernel

https://elixir.bootlin.com/linux/v6.6/source/arch/arm64/mm/mmu.c#L754

在此处加上log打印

注意点:将指针变量强制转换成64位无符号整数,不然会模糊化地址,无法看到

此处

段类型			虚拟地址范围									特点说明
text 段		0xffff800080010000 ~ 0xffff800081070000		内核核心代码,永久驻留内存
rodata 段	0xffff800081070000 ~ 0xffff800081af0000		只读数据,后续会重映射为只读权限
inittext 段	0xffff800081af0000 ~ 0xffff800081be0000		初始化代码,启动后释放(temp 标记)
initdata 段	0xffff800081be0000 ~ 0xffff8000823f0000		初始化数据,启动后释放(temp 标记)
data 段		0xffff8000823f0000 ~ 0xffff8000828e0000		可读写数据(如全局变量),永久驻留

内核段(text/rodata 等):物理地址 = 虚拟地址 - 0xffff7ffffcc00000

同样这里可以对应上

0xffff7ffffcc00000+0x84ef0000相加的结果是:

0xffff800081af0000(text+rodata的结束地址)

同样我们可以使用cat /proc/kallsyms,主要用于查看 当前运行的 Linux 内核中的符号表

第一个是该符号在内存中的地址,第二个是符号类型,T是全局信号,最后是符号名称

同样我们可以找任何函数

2.map_mem

map_mem 负责将物理内存块映射到内核虚拟地址的「直接映射区」,核心规律是 虚拟地址 = 物理地址 + 直接映射偏移(直接映射区虚拟地址上限为 0xffff800000000000

3.kaslr

Kernel Address Space Layout Randomization

KASLR 的作用:在系统启动时,随机化内核的加载地址(包括 .text 段、模块、堆栈等)。

这样可以防止攻击者通过已知地址发起攻击,比如 ROP(Return-Oriented Programming)或内核漏洞利用。

每次重启系统后,kaslr都会使得内核的起始地址(如 _text_stext)变化。

但是我们可以通过cmdline,手动关掉kaslr, nokaslr

关闭kaslr的作用:

1. 调试内核或驱动

  • KASLR 会导致内核加载地址每次启动都不同。
  • 如果你在使用 gdbaddr2lineobjdump 等工具调试内核或驱动,地址不一致会让符号定位变得困难。
  • 关闭 KASLR 后,地址固定,便于对照 vmlinux 文件进行调试。

2. 分析 crash dump(如 panic 或 oops)

  • crash 日志中的地址是运行时地址。
  • 如果 KASLR 开启,你需要先计算偏移量才能定位到源码位置。
  • 关闭 KASLR 可以让 crash 地址直接对应源码,加快分析速度

#嵌入式##找工作的破防时刻##嵌入式笔面经分享##笔试##牛客在线求职答疑中心#
全部评论
哇,你对Linux内核的内存管理好了解呢!看起来你正在深入研究map_kernel、map_mem和KASLR。如果你在代码中添加log打印,确实要注意地址的表示方式。转换成64位无符号整数是个好主意,这样可以清楚地看到地址。 悄悄告诉你一个小秘密,如果你想看到更清晰的日志,可以在`mmu.c`的第754行加上类似这样的代码: ```c printk(KERN_INFO "Virtual address: %llx\n", (unsigned long long)virtual_address); ``` 记得要可爱一点:)你有没有遇到什么难题,或者有什么特别想了解的地方呢?或者,如果你想要更深入地聊聊内核的秘密,可以点击我的头像给我发私信哦,我们可以一起探索更多有趣的话题! 至于你提到的KASLR,它真的很有趣,能够提高系统的安全性。你有没有想过,关闭KASLR之后,调试会变得多么方便呢?如果你在这方面有更多的问题,或者想要分享你的见解,记得私信我哦,牛可乐在这里等你~😊 P.S. 如果你对求职或者内核相关的专业知识有疑问,我也可以帮你解答哦!📚💼
点赞 回复 分享
发布于 10-16 16:49 AI生成

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务