Ich möchte einen neuen Systemaufruf über ein LKM hinzufügen, aber ich bin mir nicht sicher, wie das geht. Das heißt, dass ich weiß, wenn ich einen komplett neuen Systemaufruf hinzufügen möchte, kann ich durch die sys_call_table einen sys_ni_syscall
suchen und ihn einfach ersetzen, aber ich war neugierig, ob es tatsächlich möglich war zu sys_call_table
hinzuzufügen. Ich realisiere, es ist wahrscheinlich nicht möglich, da es eine feste Größe Array ist, aber ich frage mich, ob es andere clevere Möglichkeiten zum Hinzufügen von Systemaufrufen ohne Überschreiben einer nicht verwendeten System-Rufnummer.Ist es möglich, einen Systemaufruf über ein LKM hinzuzufügen?
Antwort
Überprüfen Sie die Linux Documentation Project-Website für "Das Linux Kernel Modul Programming Guide" (http://www.tldp.org/LDP/lkmpg/2.6/html/index.html). Suchen Sie speziell nach Systemaufrufen: http://www.tldp.org/LDP/lkmpg/2.6/html/x978.html. Das sollte dir zumindest einen Anfang geben.
Lesen Sie das durch, obwohl es wie sys_call_table aussieht nicht mehr im Kernel 2.6 exportiert. Siehe den Kommentar in syscall.c – FreeMemory
Hier ist ein Beispiel
linux system calls
edit:
Das obige Beispiel zeigt Howto einen Systemaufruf implementieren, soweit man von einem ladbaren Modul implementiert; AFAIK, das ist nicht möglich, es sei denn, Sie überschreiben ein vorhandenes, weil die Größe des Arrays #define ist.
Bedenken Sie, dass auch Änderungen am Benutzerbereich erforderlich sind, zumindest wenn Sie den neuen Systemaufruf tatsächlich verwenden möchten.
Dies ist eine alte Frage, aber trotzdem möchte ich meine Lösung vorschlagen. Der einfachste Weg, eine "Systemanruf-ähnliche" Umgebung zu implementieren, ist, sich auf ein gefälschtes Gerät zu verlassen. Insbesondere könnten Sie einen neuen Gerätetreiber erstellen, der eigentlich nichts steuert. Wenn Sie darauf schreiben, kann das installierte Modul die erforderlichen Aktionen ausführen. Wenn Sie mehrere Dienste anbieten möchten, können Sie sie außerdem den Operationen ioctl
zuordnen.
- 1. ist es möglich, den Kinect Paint-Tasten einen Soundeffekt hinzuzufügen?
- 2. Ist es möglich, ein benutzerdefiniertes Suchfeld zu Google Kontakte hinzuzufügen?
- 3. Ist es möglich, einen vorhandenen Baum zum Index hinzuzufügen
- 4. Ist es möglich, einem Stil ein benutzerdefiniertes Rechtschreibwörterbuch hinzuzufügen?
- 5. Ist es möglich einen "Precommit Hook" auf TFS hinzuzufügen?
- 6. Ist es möglich, einen OnClick Listener zu einer QCheckBox hinzuzufügen?
- 7. Ist es in Highcharts möglich, dem Legendensymbol einen Rahmen hinzuzufügen?
- 8. Ist es möglich, einen Eventlistener auf einem DIV hinzuzufügen?
- 9. Ist es möglich, Links zu Kaminari einen Anker/Parameter hinzuzufügen?
- 10. Ist es möglich, dem HTTP-Header einen Multimediatyp hinzuzufügen?
- 11. Ist es möglich, ein View-Modell auf _layout.cshtml hinzuzufügen?
- 12. Ist es möglich, CMFCToolBar einem Dialog hinzuzufügen?
- 13. Ist es möglich, Beobachter zu TableView.contentOffset hinzuzufügen?
- 14. Ist es möglich, PostGIS zu PipelineDB hinzuzufügen?
- 15. Ist es möglich, ein Symbol in den Bootstrap-Navigationsregisterkarten hinzuzufügen?
- 16. Ist es möglich, ein benutzerdefiniertes Icon zu hta hinzuzufügen
- 17. Ist es möglich, ein Benutzersteuerelement zu einem Composite-Steuerelement hinzuzufügen?
- 18. Ist es möglich, einen funktionsbasierten datenbankunabhängigen Index über eine Rails/ActiveRecord-Migration hinzuzufügen?
- 19. Nicht möglich, einen RecyclerView über AndroidStudio im Entwurfsmodus hinzuzufügen?
- 20. Ist es möglich, einen Link zur Flash-Nachricht hinzuzufügen, wenn es bestätigt ist?
- 21. Es ist nicht möglich, den Einstellungen eine Roo-Konfiguration hinzuzufügen
- 22. Ist es möglich, ein Google-Konto zu "Accounts & Sync" hinzuzufügen, ohne einen Anmeldebildschirm zu starten
- 23. Ist es möglich, Request Header einer iframe src Anfrage hinzuzufügen?
- 24. Ist es möglich, Absatzabstände innerhalb eines Textfelds hinzuzufügen?
- 25. Ist es möglich, den @Query-Parametern Platzhalter hinzuzufügen?
- 26. Ist es für ein Programm möglich, SIGTERM zu erfassen, das vom Systemaufruf exit generiert wurde?
- 27. Ist es möglich, benutzerdefinierte Bilder zum Google Analytics Dashboard hinzuzufügen?
- 28. Warum ist es möglich, Text innerhalb des Kopfbereichs hinzuzufügen
- 29. Ist es möglich, einem Tupel eine Aufzählung hinzuzufügen?
- 30. Ist es möglich, tab-ähnliche Funktionen zu tmux-Fenstern hinzuzufügen?
Mögliches Duplikat von [Linux-Systemaufruf unter Verwendung von LKM implementieren] (https://stackoverflow.com/questions/12623066/implementing-linux-system-call-using-lkm) –