Wir müssen auf die globalen Kernel-Variablen in net/ipv4/af_inet.c zugreifen, die nicht explizit von einem ladbaren Kernel-Modul exportiert werden. Wir verwenden derzeit 2.6.18 Kernel.Zugriff auf Linux-Kernel-Symbole, die nicht über EXPORT_SYMBOL exportiert werden *
kallsyms_lookup_name scheint nicht vorhanden zu sein mehr (nicht exportiert)
__symbol_get NULL zurück (beim weiteren Lesen, symbol_get/__ symbol_get sieht durch den Kernel und die vorhandenen Module Symboltabellen, die nur Symbol exportiert enthält, und es Gibt es dort, um sicherzustellen, dass das Modul, von dem ein Symbol exportiert wird, tatsächlich geladen wird)
Gibt es trotzdem Zugriff auf Symbole, die nicht von einem Kernelmodul exportiert werden?
Nachdem ich viele Antworten gelesen und gelesen habe, scheint es sehr schwer zu sein, eine Methode über viele Kernel-Versionen hinweg zu finden, da sich die KAPI im Laufe der Zeit erheblich ändert.
Wird 'objdump path/to/modulename.ko' tun, was Sie brauchen? Sie müssten die Ausgabe decodieren, um den entsprechenden Offset im Modul zu bestimmen, und diesen anwenden. Was ist der Zweck, ein Symbol zu erhalten, das nicht exportiert wird? – wallyk
ja, wir können tatsächlich die Adresse über/proc/kallsyms im Userspace bekommen und vielleicht an das Modul weitergegeben werden, aber das scheint ein bisschen hackish zu sein, also habe ich mich gefragt, ob es etwas besseres gibt. Wir versuchen, einen Teil des Netzwerk-Codes herauszuziehen und zu einem Modul zu machen, damit wir Bugfixes durchführen können, ohne den Kernel neu starten zu müssen. –