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

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



El vie, 06-04-2012 a las 09:57 +0200, Juan Antonio escribió:
> El 05/04/12 19:06, Camaleón escribió:
> > El Thu, 05 Apr 2012 13:43:44 -0300, Gonzalo Rivero escribió:
> > 
> >> 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ó:
> > 
> > (...)
> > 
> >>>> 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");
> > 
> > ¿Del archivo "main.c" que tengo que modificar? 
> > 
> > No, no aparece ninguna llamada a la función "init_module", un grep me 
> > devuelve esa cadena ("init_module") en un archivo "*.o", binario.
> > 
> > ¿Dónde tendría que poner el "printk"? :-?
> > 
> >> 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
> > 
> > Ya lo pillo... y la idea es buena pero no sé cómo llevarla a la práctica.
> > 
Y por que no comparas el amodulo anterio con el nuevo generado, si son
iguales no se aplico el parche

Podes compara los fuentes con diff o los binarios con rdiff

> > Saludos,
> > 
> 
> 
> perdona camaleon, lo de init_module parece que ha cambiado, asi lo
> recordaba yo del 2.4
> 
> Busca en el código la llamada a module_init(). Como parámetro lleva el
> numbre de una función y ahora esa función es el punto de entrada del
> código del módulo.
> 
> Por ejemplo de bsr.c
> 
> [ código ]
> 
> static int __init bsr_init(void)   <------- *
> {
>     struct device_node *np;
>     dev_t bsr_dev;
> 
>     [ mas código ]
> 
> }
> 
> [ mas código aun ]
> 
> module_init(bsr_init);   <----- * Esta
> module_exit(bsr_exit);
> 
> 
> Y dentro de la función escribes el printk que te ha dicho Gonzalo.
> 
> Lo siento, un saludo.
> 
> -- 
> "Tanto en los deportes como en todo lo demás, soy un experto. Pero para
> mantener viva mi inteligencia natural y fuera de serie, tengo que comer
> mucho"
> 
> 



Reply to: