Cher journal:
Je programme actuellement un module kernel qui devrai permettre de pouvoir établir un certain nombres de statistiques sur l'utilisation du clavier ( nombre de touches enfoncés, statistiques sur les heures etc .... MAIS pas un keylogger, hein... ).
Après avoir étudier les différentes possibilité, j'en suis venue a la conclusion qu'il fallait hijacker la fonction getkeycode qui est un appel interne: j'ai donc utilisé un technique similaire à http://www.u-e-b-i.com/silvio/kernel-hijack.txt(...) ( doc ancienne...) mais je n'arrive pas faire fonctionner mon code ( http://fv.kh3.org/kklog.c(...) ).
Je sais que cette technique est réputé dangereuse et que nombre de développeurs kernel estiment qu'il y a toujours un autre moyen mais est ce que qqun a deja implémenter l'hijacking d'appel interne avec un kernel 2.6 ?
PS: ( le kernel utilisé est un 2.6.7 sans patch ou LSM)
# try a shot to www.kernsh.org
Posté par Caeies . Évalué à 1.
Caeies,
(Indice : il faut patienter encore un peu pour voir la nouvelle mouture, si j'en crois certaines indiscretions)
[^] # Re: try a shot to www.kernsh.org
Posté par Caeies . Évalué à 1.
Mea culpa (ou alors il faudra attendre un peu plus longtemps.)
Caeies
# Quelque piste....
Posté par TheBreton . Évalué à 2.
qu'est ce que tu entend par ca marche pas ?
tu crash tout ?
ton code d'interception n'est pas appellé ?
deux petite chose sans rapport peut etre
--printk("Key pressed (kkmod)\n")
il m'as toujours semble qu'il fallait indiquer un niveau d'alerte
a printk
printk("<1>Key pressed (kkmod)\n")
par exemple.
--*(long *)&gkk_code[1] = (long)mygetkeycode;
dans ton contexte tu mets un long destiné a un jmp assembleur dans un tableau de char. C'est possible qu'ici tu ait un pb d'alignement memoire dans le rangement de tes variables, tu devrais jeter un coup d'oeil dans l'assembleur pour voir si c'est compiler exactement comme tu veux qu'il soit dans le resultat final.
Voila, fin de mes 2 question de candide
[^] # Re: Quelque piste....
Posté par dopus_kh3 . Évalué à 1.
Ce qui est étrange c'est que je n'ai aucun plantage et que le prink de la fonction _memcpy affiche bien l'addresse trouvé dans le System.map qui vas bien.
[^] # Re: Quelque piste....
Posté par TheBreton . Évalué à 3.
1) mets ton printk dans les sources du kernel pour verifier que getkeycode est bien utilisee de temps en temps dans le kernel
2)pour info chez moi j'ai
grep -i getkeycode /boot/System.map
getkeycode
pckbd_getkeycode
si tu as un truc similaire as tu essaye de surcharge ton pckbd_getkeycode ?
d'apres le nom je dirais bien
PC no comment
KBD keyboard
_getkeycode
soit une fonction directement liée a mon clavier en l'occurence
3)fais un printk du tableau gkk_code dans l'initmodule pour voir si le codage asm est correct.
apres le
*(long *)&gkk_code[1] = (long)mygetkeycode;
# ...
Posté par M . Évalué à 2.
Sinon faut regarder comment d'autres modules hijack le kernel 2.6(je crois que le module poubelle pour linux y arrive)...
[^] # Re: ...
Posté par dopus_kh3 . Évalué à 1.
[^] # Re: ...
Posté par Christophe Lucas (site web personnel) . Évalué à 1.
Tu ne peux pas tout simplement (concernant les frappes de touches au clavier) regarder quelle fonction est enregistrer dans l'idt et aller à cette fonction, ajouter ta fonction de statistique où il faut et le tour est joué.
Bon un conseil: cherches : "lidt" ;()
-- Christophe
# ca marche!
Posté par dopus_kh3 . Évalué à 1.
Tout ce passe comme il faut le chargement du module et son déchargement ne posent pas de probleme en particulier.
La technique présenté sur http://www.u-e-b-i.com/silvio/kernel-hijack.txt(...) appliqué sur un kernel 2.0 dans la doc fonctione sur le kernel 2.6.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.