在x86系統上,我有一個Linux內核模塊(「監視器模塊」),每次加載特定內核模塊(「目標」)時都會收到內核通知。幾乎任何內核模塊都可以成爲目標。我在an instrumentation system中使用這個工作。有沒有辦法讓內核模塊找到另一個加載模塊的段地址?
當觀察者模塊處理這樣的通知時,如果觀察者知道加載的目標模塊的ELF部分的地址,那麼它可能很方便。任何想法如何在內核空間中獲得這些信息?
當然,我可能會在目標加載後立即在用戶空間中獲取/sys/module/<target_name>/sections/
中相應文件的內容,然後以某種方式將此數據傳遞給觀察器模塊,但這太笨拙。我想找到一種方法直接在內核空間中獲取這些信息。
就我所見到的模塊加載器的源代碼而言,它不會在struct module
中存儲段地址,只是爲段創建sysfs文件。也許有可能以某種方式找到與這些文件相對應的內核對象並從這些對象中讀取所需的數據?或者可能使用其他方法?
看來,包含在'struct module'中的kobject('mkobj。kobj'字段)涉及sysfs中模塊的表示。當我有空時,我會進一步深入。有可能獲得包含使用該kobject的部分的名稱和地址作爲起點的屬性。 – Eugene