Прятки в linux


         

код самого перехватчика для экономии


       // системный вызов SYS_getdents

       // и сохраняем его в переменной o_getdents

       o_getdents = sys_call_table[SYS_getdents];

      

       // заносим указатель на функцию перехватчик

       // ( код самого перехватчика для экономии здесь не показан)

       sys_call_table[SYS_getdents] = (void *) n_getdents;

      

       // возвращаемся

       return 0;

}

// восстановление оригинальных обработчиков

void cleanup_module(void)

{

       sys_call_table[SYS_getdents] = o_getdents;

}

Листинг 7 техника перехвата системных вызовов

По такому принципу работает подавляющее большинство rootkit'ов, правда, попав на неизвестное ядро, часть из них со страшным грохотом падает, а часть просто прекращает работу, что и не удивительно! Ведь раскладка системных вызовов меняется от ядра к ядру!



Рисунок 5 последствия неудачного перехвата системных вызовов


Содержание  Назад  Вперед