2009-06-02 6 views
0

Je fais des recherches sur les rootkits et j'ai reçu beaucoup d'avertissements like`set_memory_ * fonctions dans le noyau Linux> = 2.6.25

"BUG: unable to handle kernel paging request at [addr]" 

quand j'ai essayé de joindre ma propre fonction à sys_call_table[__NR_read], pour Exemple.

Dans les noyaux < = 2.6.25, la fonction change_page_attr() aidait à changer les attributs de page d'une certaine adresse. Cependant, dans les nouveaux noyaux> = 2.6.28, cette fonction est obsolète et est remplacée par des fonctions set_memory_*, liées à PAT.

La documentation du noyau Linux n'est pas claire sur l'utilisation des fonctions PAT; J'ai utilisé set_memory_wc() & set_memory_uc() pour modifier les autorisations sys_call_table mais je continue à recevoir le même BUG. Ces fonctions, je suppose, remplacent le vieux change_page_attr().

J'ai vu un exemple dans le module i915, et j'ai utilisé des fonctions de la même manière, mais le BUG continue.

Toute aide à ce sujet? Est-ce que je gère mal les adresses de noyau?

Répondre

2

J'ai testé avec les noyaux debian 2.6.26 et 2.6.30 spécifiques.

pour 2.6.26 set_memory_wc et la restauration avec set_memory_wb fonctionne.

2.6.30 ne fonctionne pas s'il y a CONFIG_DEBUG_RODATA dans Kernel Hacking (je pense). Je n'ai pas eu le temps de vraiment recompiler, mais j'ai testé avec un noyau personnalisé qui ne l'a pas.

dans 2.6.30 set_memory_rw et set_memory_ro sont également exportés.

Espérons que cela aide.

+0

Pourquoi doit-on _restore_ après avoir réglé sur un mode autre que l'écriture différée? J'ai également lu dans les docs de Linux que 'set_memory_ [uc | wc | wt]' et 'set_memory_wb' devraient être utilisés par paires pour retourner le mode à writeback après utilisation, mais aucune explication concernant la motivation n'est incluse. – sherrellbc

Questions connexes