在(或之后?) 2.4 中,sys_call_table
不再导出符号以使其更难挂钩系统调用。
忽略您仍然可以从 IDT 或通过阅读获得此信息/boot/System.map-<kernel-version>
,我想知道为什么这个地址在重新启动和机器(使用相同的内核版本)之间似乎是恒定的?难道不值得让它动态化吗?是否有理由要求它是静态的?
我的目标是这样的:
sys_call_table
不再导出到模块以使挂钩系统调用更加困难,但是模块(即内核空间程序)仍然可以轻松地通过读取System.map
或简单地根据内核发布信息进行猜测来获取此信息,因为地址似乎是相同的所有机器运行相同版本的内核。