2013-06-20 12 views

risposta

14

Non è possibile.

Senza ricompilare il kernel, tutto ciò che si può fare è compilare e caricare i moduli del kernel, ei moduli del kernel non possono aggiungere nuove chiamate di sistema.

+1

Bene che è stato breve e dolce. – BoBTFish

+1

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. –

+0

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

3

Certo, è possibile.

In breve, è necessario correggere il kernel in esecuzione.

Ci sono almeno 2 modi per aggiungere una nuova chiamata di sistema:

  1. 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.)
  2. 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?

:)

+1

Il metodo che stai descrivendo è incredibilmente brutto e insicuro - a meno che tu non sia incredibilmente attento a questo, c'è una possibilità che si verifichi un crash della macchina una volta caricata. In nessuna circostanza considererei l'utilizzo di un modulo che lo ha fatto su un sistema di produzione. – duskwuff

+1

Per quanto riguarda il metodo, funziona, ma l'implementazione è importante, hai ragione. L'implementazione corretta richiede abilità forti e questo compito non per i succhiatori :) –

Problemi correlati