Chciałbym utworzyć moduł jądra od zera, który zostanie zablokowany w sesji użytkownika i monitorować każde wywołanie systemowe wykonane przez procesy należące do tego użytkownika.Moduł jądra do monitorowania syscalls?
Wiem, co wszyscy myślą - "wykorzystaj strace" - ale chciałbym mieć trochę własnego rejestrowania i analizy danych, które zbieram, a strace ma pewne problemy - aplikacja może użyć "mmap" do zapisuj do pliku bez zawartości pliku, która kiedykolwiek pojawiła się jako argumenty "otwartego" wywołania systemowego, lub aplikacja bez uprawnień do zapisu może tworzyć coredumpy do kopiowania wrażliwych danych.
Chcę być w stanie obsłużyć te specjalne przypadki i zrobić własne logowanie. Zastanawiam się jednak - w jaki sposób mogę skierować wszystkie syscalls przez mój moduł? Czy jest jakiś sposób, aby to zrobić bez dotykania kodu jądra?
Dzięki
Powinieneś użyć funkcji 'ptrace' syscall (która rzeczywiście jest używana przez' strace' i 'gdb'). Powodzenia, potrzebujesz trochę. Ale prawdopodobnie nie musisz kodować żadnego modułu jądra, tylko po to, aby rozwinąć aplikację za pomocą 'ptrace'. –