Ich versuche den Kerneladressraum zu finden, in den mein ladbares Kernelmodul durch insmod verschoben wird.Ermitteln der Kerneladresse eines ladbaren Kernelmoduls
Ich kam zu wissen, dass durch die Verwendung der -m, -O-Schalter beim Modulwechsel nur die Symboltabelle und die Adressen der ausführbaren Abschnitte vom Standpunkt des Moduls aus gesehen werden können und nicht verschoben werden Adressen, da dieser Prozess der Verlagerung ausgeführt wird, wenn wir ein insmod machen.
Kann jemand sagen, wie man die verschobene Adresse eines Moduls im Kernspeicher findet, d. H. Die Adresse, die innerhalb des Kernels gebunden ist, wo sich ein geladenes Modul befindet?
Danke!
P.S Bitte beachten Sie, dass ich einen Redhat 2.4 Linux-Kernel verwende, in dem die Liste/proc/modules die virtuellen Adressen der geladenen Module nicht anzeigt.
Hallo @tian_yufeng, danke! Allerdings verwende ich einen Redhat 2.4 Linux-Kernel, in dem die/proc/modules-Liste nicht die virtuelle Adresse zeigt, die in meiner Frage bearbeitet wurde. Weißt du, wie man die Kernel-Adresse von geladenen Modulen in diesem 2.4-Kernel bekommt? – freax
2.4 Kernel ist ein wenig out. Ich denke Codes müssen geändert werden, um die gewünschte Funktion zu unterstützen. Können Sie mir die Detailversion Ihres Kernels nennen? Also kann ich einen herunterladen, um einen Scheck zu bekommen. –
Ich benutze Redhat 2.4.20-24.7 Kernel haben die Adressen der Module mit "__this_module.next" Zeiger, die ich glaube, sind virtuelle gefunden. Können Sie mir sagen, wie diese virtuellen Adressen in physikalische Adressen umgewandelt werden? Vielen Dank! – freax