È necessario accedere ai vars globali del kernel in net/ipv4/af_inet.c che non vengono esportati esplicitamente da un modulo del kernel caricabile. Al momento stiamo usando il kernel 2.6.18.Accedere ai simboli del kernel Linux che non vengono esportati tramite EXPORT_SYMBOL *
kallsyms_lookup_name non sembra essere più disponibile (non esportata)
__symbol_get restituisce NULL (su ulteriori letture, symbol_get/__ symbol_get guarda attraverso tabelle dei simboli del kernel ed esistenti moduli che contiene esportate unico simbolo, ed è è lì per assicurarsi che il modulo da cui viene esportato un simbolo sia effettivamente caricato)
C'è comunque accesso ai simboli che non vengono esportati da un modulo del kernel?
Dopo aver letto e visto le risposte fornite alle persone fornite, sembra molto difficile trovare un metodo su molte versioni del kernel poiché il kAPI cambia significativamente nel tempo.
Will 'objdump path/to/modulename.ko' fa ciò che ti serve? Dovresti decodificare l'output per determinare l'offset corrispondente nel modulo e applicarlo. Qual è lo scopo di ottenere un simbolo che non viene esportato? – wallyk
sì, siamo in grado di ottenere l'indirizzo tramite/proc/kallsyms nello spazio utente e magari passato al modulo, ma sembra un po 'hacker quindi mi chiedevo se c'è qualcosa di meglio. Stiamo cercando di estrarre parte del codice di rete e renderlo un modulo in modo da poter eseguire correzioni di errori senza dover riavviare il kernel. –