[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Incluir una "huella" en módulo del kernel



El jue, 05-04-2012 a las 16:32 +0000, Camaleón escribió: 
> El Thu, 05 Apr 2012 16:52:12 +0200, Juan Antonio escribió:
> 
> > El 05/04/12 16:42, Camaleón escribió:
> 
> (...)
> 
> >>> Si es asi, parchea init_module, que se llama cuando haces insmod, y
> >>> con printk escribe un mensaje a la consola que se mostrará cuando lo
> >>> cargues, para tener la certeza de que tu código esta ahí.
> >> 
> >> Mmmm, mmmmmm... sigo sin enterarme. ¿Algún guía-burros que pueda seguir
> >> con instrucciones sencillitas de tipo "primero haz esto, luego haz esto
> >> otro, después ejecuta esto y por último edita esto otro"?
> >> 
> >>> Si no es asi, lo siento, pero no he entendido lo que pretendes.
> >> 
> >> No, no... es eso mismo.
> >> 
> >> Saludos,
> >> 
> >> 
> > bueno, pues a ver, si cuando haces el patch no te da error, ni cuando
> > compilas el kernel tampoco, quiere decir que debe haberse parcheado y
> > compilado correctamente.
> 
> Ya, eso es lo que pienso yo también pero se supone que el parche debe 
> corregir una traza (error) que se produce en el kernel y no lo hace, 
> quiero asegurarme de que no he metido la pata al aplicar el parche y 
> después al cargar el módulo.
>  
> > En todo caso, si el código de tu amigo declara alguna función o
> > variable, es posible que puedas cerciorarte con objdump,
> > 
> > objdump -t modulo.ko
> > 
> > debería listar la tabla de símbolos del objeto, si aparece la función
> > declarada en tu código, voila!
> 
> Esto saca un montón de datos pero creo que no sirve para ver si una línea 
> se ha añadido o se ha modificado porque filtrando con "grep" no me saca 
> nada, ni el código original ni el que debería aparecer tras aplicar el 
> parche.
> 
> > Por último, lo que te comentaba antes era que tu misma añadieses al
> > parche un printk, que es un como un printf de libc de toda la vida,
> > 
> > http://www.kernel-labs.org/?q=printk
> > 
> > en la función init_module(), que es la que se llama cuando cargas el
> > módulo.
> 
> Huys, no entiendo ni jota. Voy a ver si logro sacar algo útil del 
> "objdump" que me parece más asequible :-)
> 
esto entendí yo: en algún lugar del módulo hay una init_module() (man 2
init_module), en ese tal lugar podés agregar algo como:
printk(KERN_WARNING "Hola mundo!\n");

y recompilarlo. Entonces, al cargarse, el módulo debería mostrarte en
dmesg (o similares) un: Hola mundo!

Y esa sería tu huella para saber que tenés el módulo modificado 


Reply to: