查找可加载内核模块的内核地址

时间:2013-03-21 02:59:46

标签: linux linux-kernel kernel embedded-linux kernel-module

我正在尝试找到内核地址空间,我的可加载内核模块由insmod重新定位。

我开始知道通过在模块化模块时使用-m,-O开关,我们只能从模块的视点看到符号表和可执行文件的部分地址,而不是它们的重定位地址因为当我们进行insmod时会执行重定位过程。

任何人都可以告诉如何在内核内存中找到模块的重定位地址,即加载模块所在的内核中绑定的地址吗?

谢谢!

请注意,我使用的是Redhat 2.4 Linux内核,其中/ proc / modules列表未显示已加载模块的虚拟地址。

2 个答案:

答案 0 :(得分:11)

转到目录/sys/module/<module-name>/sections/.text - 将显示代码的加载位置 /sys/module/<module-name>/sections/.data将显示模块的bss部分的数据部分和.bss。

答案 1 :(得分:9)

您可以从/ proc / modules文件获取核心部分指针(虚拟地址,不是物理内存地址,但可以转换为物理地址)和模块的占用空间大小。

例如我的Linux机器上的文件的一部分:

autofs4 29253 3 - Live 0xf9014000
hidp 23105 2 - Live 0xf900d000
rfcomm 42457 0 - Live 0xf8f84000