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: