Tenemos una necesidad de acceder al kernel global vars en net/ipv4/af_inet.c que no se exportan explícitamente desde un módulo de kernel cargable. Estamos usando 2.6.18 kernel actualmente.Acceda a los símbolos del kernel de Linux que no se exportan a través de EXPORT_SYMBOL *
kallsyms_lookup_name no parece estar disponible más (no se exporta)
__symbol_get devuelve NULL (tras una posterior lectura, symbol_get/__ symbol_get mira a través de tablas de símbolos de los módulos del kernel y existentes de los que sólo contiene exportan símbolo, y se está allí para asegurarse de que el módulo desde el que se exportó un símbolo está realmente cargado)
¿Hay alguna forma de acceder a los símbolos que no se exportan desde un módulo kernel?
Después de leer y ver las respuestas que las personas proporcionaron, parece que sería muy difícil encontrar un método en muchas versiones de kernel, ya que el kAPI cambia significativamente con el tiempo.
Will 'objdump path/to/modulename.ko' hace lo que necesita? Debería decodificar la salida para determinar el desplazamiento correspondiente en el módulo y aplicar eso. ¿Cuál es el propósito de obtener un símbolo que no se exporta? – wallyk
sí, podemos obtener la dirección a través de/proc/kallsyms en el espacio de usuario y tal vez pasarla al módulo, pero eso parece un poco harapiento, así que me preguntaba si hay algo mejor. Estamos tratando de sacar parte del código de red y convertirlo en un módulo para que podamos corregir los errores sin tener que reiniciar el kernel. –