2009-01-20 11 views
9

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?

+0

Mögliches Duplikat von [Linux-Systemaufruf unter Verwendung von LKM implementieren] (https://stackoverflow.com/questions/12623066/implementing-linux-system-call-using-lkm) –

Antwort

3

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.

1

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.

Verwandte Themen