首页 > 解决方案 > 如何在插入之前获取.ko模块的加载地址?

问题描述

需要加载内核模块(*.ko)的内存地址,这样我就可以在访问该地址时闯入系统。

似乎有很多帖子建议事后如何获取它,例如 /proc/modules 。这很棒,但这是事后的事。

即使在运行时加载、卸载模块也不能保证它总是在同一个地址加载。如果有办法解决吗?我希望 insmod 有一个地址参数,但似乎我错了。

标签: debugginglinux-kernellinux-device-driverkernel-module

解决方案


我正在用答案结束我自己的问题。

最佳评论或答案是上面评论中的@Tsyvarev。注释 - 请参阅 register_module_notifier - 告诉您如何在运行时获取地址 - 在您自己的代码中说。(我没有使用它,因为我不需要它)。

对于我的情况,我需要它来使用外部硬件监视器进行调试,并且我可以同样设置调试器以在需要时中断 module_alloc 上的系统。(而且我控制何时加载特定模块。)

因此,总而言之-以上两种方式-这里解释了如何在“加载”模块之前获取地址。


推荐阅读