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

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



El 05/04/12 16:42, Camaleón escribió:
> El Thu, 05 Apr 2012 16:26:35 +0200, Juan Antonio escribió:
> 
>> El 05/04/12 16:15, Camaleón escribió:
>>> El Thu, 05 Apr 2012 16:05:01 +0200, Juan Antonio escribió:
>>>
>>>> El 05/04/12 15:48, Camaleón escribió:
>>>>> Hola,
>>>>>
>>>>> ¿Sería posible incluir una "huella" (o marca) en el código fuente de
>>>>> un módulo del kernel que permita determinar que un parche que se haya
>>>>> aplicado a ese módulo se haya aplicado correctamente una vez
>>>>> compilado?
>>>>>
>>>>>
>>>>>
>>>> pues nada mejor que un printk en el init_module() ¿No?
>>>
>>> ¿"Lo cualo"? :-)
>>>
>>> ¿Algún ejemplillo práctico o páginilla para consultar qué es lo que
>>> hace y cómo hacerlo, please? Porque no me cosco de eso del "printk" ni
>>> del "init_module()".
>>>
>>>
>>>
>> perdona, pero no estoy seguro de haber entendido bien lo que quieres
>> hacer ¿estas escribiendo un parche para un módulo y lo que quieres saber
>> es si tu código se ha compilado correctamente no?
> 
> Sasto. 
> 
> Bueno, el parche lo ha escrito alguien que sabe de parches (y de C), 
> claro, yo sólo hago de conejillo de indias y quiero saber si el código 
> que se ha cambiado/añadido al código fuente de los archivos (*.c, *.h) se 
> ha incluido correctamente en el módulo tras compilarlo, vamos, si he 
> aplicado el parche como dios manda.
> 
>> 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.

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!

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.

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: