2012-05-04 17 views
5

Escribo el código sobre cosas de bajo nivel. Necesito saber las direcciones del símbolo del kernel para escribir un código confiable. Así que estoy tratando de leer los kallsyms cuando estoy en modo de usuario en Ubuntu kernel-3.0.19. y esa es la salida de kallsyms en modo usuario.Lectura de kallsyms en modo de usuario

... 00000000 r __ksymtab_prepare_kernel_cred 00000000 00000000 r __kcrctab_prepare_kernel_cred r __kstrtab_prepare_kernel_cred ...

¿Cómo puedo solucionar este problema en el modo de usuario. cuando estoy en la raíz y todo está bien, pero eso no es lo que necesito.

gracias.

Respuesta

8

Es intencional que /proc/kallsyms muestra ceros en lugar de las direcciones reales para un usuario no root. Esto reduce el riesgo de seguridad un poco.

Los detalles están disponibles en this upstream commit. Vea también cómo se usa el especificador de impresión %pK en s_show() function in kallsyms.c, s_show siendo responsable de proporcionar un registro en /proc/kallsyms.

Dudo que todavía sea posible obtener direcciones de símbolos de alguna manera sin ser un usuario root. No se puede acceder al System.map sin privilegios de root tampoco. Lo mismo para escribir al /proc/sys/kernel/kptr_restrict.

+0

'No se puede acceder a System.map sin privilegios de root tampoco' En mi servidor RHEL está permitido leer este archivo /boot/System.map -... –

+0

Depende de la distribución y/o la versión del kernel, supongo. Si System.map contiene las direcciones de las funciones del kernel y es legible por defecto para un usuario que no es root, esto realmente hace que la protección de kallsyms sea inútil. Si es RHEL 6, es probable que el kernel sea 2.6.32, IIRC, donde/proc/kallsyms no estaba protegido. El archivo System.map tan legible no aumenta los riesgos de seguridad en ese caso. – Eugene

+0

Si está utilizando un kernel compilado por la distribución, puede ver los archivos de distribución para el System.map apropiado, ¿no? – domen

Cuestiones relacionadas