Czy istnieją jakieś dobre (wstępne) samouczki dotyczące dodawania wywołań systemowych do FreeBSD za pośrednictwem modułów ładowalnych jądra? W szczególności wymagana forma metod, uzyskanie informacji z procesów, itp.Tworzenie nowych wywołań systemowych za pośrednictwem KLD w FreeBSD
Odpowiedz
Jestem naprawdę szczęśliwy, widząc, że twój profesor daje ci takie praktyczne zadania. Chciałbym mieć takich prof.
W każdym razie chodzi o to, że gdy pracujesz w domenie jądra, możesz ledwie znaleźć jakiekolwiek zasoby. Osoby pracujące w domenie jądra nie dokumentują ani nie piszą samouczków. Tak naprawdę trudno jest znaleźć jakiekolwiek dokumenty "Level Entry". Ponadto, nawet jeśli znajdziesz taki samouczek, rzeczy w jądrze ciągle się zmieniają, a dokument nie będzie aktualizowany. Kiedy zaczynałem, musiałem się uczyć, czytając kod jądra.
Inną ważną rzeczą jest, że Linux jest bardziej udokumentowany niż jakikolwiek UNIX. Czasami możesz czytać zawartość Linuksa i przekazywać tę wiedzę do systemu UNIX. Wystarczy z narzekaniem. Oto zasoby, które mogą ci pomóc.
BSD UNIX:
- Dynamic Kernel Linker (KLD) Facility Programming Tutorial ma "KLD syscall implementacji szkielet"
- Designing BSD Rootkits: An Introduction to Kernel Hacking To uczy innego podejścia przy użyciu Runtime kernel patching (zazwyczaj trojany używać tego podejścia) załatać dyspozytora wywołań systemowych i stworzyć wywołanie systemowe.
Linux:
- Adding A System Call to Linux Kernel: krok po kroku tutorial
- Kernel command using Linux system calls: Poznaj interfejs wywołania systemu Linux (SCI), aby dowiedzieć się, jak dodać nowe wywołania systemowe (i alternatywy dla robi więc)
Dziękuję bardzo! To było bardzo pomocne. – dckrooney
@dcmoebius: Cieszę się, że ci pomogło. Jeśli nie masz problemu z udostępnieniem swojego kodu. Proponuję napisać samouczek/wpis na blogu dotyczący tego zadania. I podaj link tutaj. Pomoże to innym. – claws
To świetny pomysł. Zrobię to, ale niestety późniejsze zadania są oparte na tym. Tak więc poczekam kilka tygodni na wydanie "rozwiązania": P – dckrooney
Muszę zauważyć, że nie jest to zadanie domowe, ale jest częścią większego zadania. :) – dckrooney
Jestem po prostu ciekawy. Co jest kompletnym zadaniem? – claws
Kompletne zadanie polega na utworzeniu oddzielnego algorytmu planowania procesów. – dckrooney