Certo, è possibile.
In breve, è necessario correggere il kernel in esecuzione.
Ci sono almeno 2 modi per aggiungere una nuova chiamata di sistema:
- Espandere le tabelle esistenti chiamate di sistema (
sys_call_table
e ia32_sys_call_table
) e istruzioni di controllo limite di chiamata di sistema di patch (usally cmp
su x86) in uno dei voci di sistema (system_call
, ecc.)
- Copiare tabelle di chiamate di sistema esistenti, espanderle secondo le necessità, istruzioni di invio chiamate di sistema patch (normalmente
call
su x86) per puntare alle istruzioni di controllo del limite di chiamata del sistema di copia della tabella e patch a qualsiasi voce di chiamata di sistema.
Vai a questa anwers per i dettagli:
Implementing Linux System Call using LKM
How do 32-bit applications make system calls on 64-bit Linux?
:)
fonte
2013-06-21 04:29:28
Bene che è stato breve e dolce. – BoBTFish
Bene, tecnicamente, soggetto allo spazio e tale, con un modulo del kernel, è possibile applicare una patch alla propria chiamata di sistema nella tabella delle chiamate di sistema esistente. Ma è disordinato, inaffidabile e sicuramente non è una buona idea. –
Tecnicamente un IOCTL è una chiamata di sistema. Quindi, quando puoi usarlo per avvolgere i tuoi dati e parlare tra utente e kernel land, perché dovresti aggiungere una nuova chiamata di sistema? – Ash