【问题标题】:Symbol addresses in /boot/System.map* are not identical to those in /proc/kallsyms/boot/System.map* 中的符号地址与 /proc/kallsyms 中的符号地址不同
【发布时间】:2015-10-29 13:11:51
【问题描述】:

/boot/System.map/proc/kallsyms 之间存在固定间隔。每次重新启动时,差距都会发生变化。

有没有布局随机化之类的东西?

例如,

> cat /boot/System.map
ffffffff81d2b5f0 T x86_64_start_kernel
ffffffff81d2bb33 T start_kernel
ffffffff81d2ee1b T xen_start_kernel

> cat /proc/kallsyms | grep start_kernel
ffffffffa4d2b5f0 T x86_64_start_kernel
ffffffffa4d2bb33 T start_kernel
ffffffffa4d2ee1b T xen_start_kernel

【问题讨论】:

    标签: linux kernel symbols


    【解决方案1】:

    是的,Linux 内核可以使用 ASLR(地址空间布局随机化),至少在 x86 上是这样。实际上,目前只能随机化基地址。

    详见内核源码中CONFIG_RANDOMIZE_BASE in arch/x86/Kconfig的描述。

    如果不知道 Linux 是什么类型以及内核是如何配置的,就很难猜测您的系统上发生了什么。

    查看是否在该内核的配置文件中设置了CONFIG_RANDOMIZE_BASE(通常是-/boot/config-<something>)。

    【讨论】:

      猜你喜欢
      • 2021-12-18
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      相关资源
      最近更新 更多