Wie implementiere ich meinen eigenen Systemaufruf, ohne den Linux-Kernel neu zu kompilieren?

8

Ich möchte meinen eigenen Systemaufruf implementieren. (Siehe Link unten)

Ссылка

Aber das Hinzufügen eines neuen Systemaufrufs erfordert die Kompilierung des Kernels.

Wie implementiere ich meinen eigenen Systemaufruf, ohne den Linux-Kernel neu zu kompilieren?

    
Amir Saniyan 20.06.2013, 16:08
quelle

2 Antworten

15

Sie können nicht.

Ohne den Kernel neu kompilieren zu müssen, müssen Sie lediglich Kernel-Module erstellen und laden, und Kernel-Module können keine neuen Systemaufrufe hinzufügen.

    
duskwuff 20.06.2013, 16:08
quelle
3

Sicher, Sie können.

Kurz gesagt, Sie müssen den laufenden Kernel patchen.

Es gibt mindestens zwei Möglichkeiten, einen neuen syscall hinzuzufügen:

  1. Erweitern Sie die vorhandenen Systemaufruftabellen ( sys_call_table und ia32_sys_call_table ) und die Systemaufruflimitüberprüfungsanweisung (normalerweise cmp auf x86) bei allen Systemaufrufeinträgen ( system_call , ia32_system_all usw.). ..)
  2. Kopieren Sie vorhandene Systemaufruftabellen, erweitern Sie sie nach Bedarf, patchen Sie die Systemaufruf-Dispatch-Instruktion (normalerweise call auf x86), um auf die Kopier- und Patch-Systemaufruflimitüberprüfungsanweisung der Tabelle bei jedem Systemaufrufeintrag zu zeigen.

Sehen Sie dies für Details an:

Linux-Systemaufruf mithilfe von LKM implementieren

Wie 32-Bit Anwendungen machen Systemaufrufe auf 64-Bit-Linux?

:)

    
Ilya Matveychikov 21.06.2013 04:29
quelle

Tags und Links