Domanda

I driver per Windows dovrebbe essere firmato e sottoposto a Microsoft per la firma del codice e questo è un requisito per i sistemi a 64 bit. Il problema è che, quando si deve aggiornare il driver, è necessario inviare di nuovo, una volta per ogni rilascio.

E 'possibile costruire una sorta di driver di proxy o spessore in modo che devo firmare e inviare solo una volta, e poi avere il mio codice in un modulo separato?

Naturalmente non posso spostare il codice di lavoro in una DLL, come anche moduli caricati dinamicamente devono essere registrata per essendo eseguito in modalità kernel 64 bit. Che cosa succede se ho messo il mio codice in un file raw, caricarlo in memoria (assegnata con la bandiera di esecuzione abilitato) e poi eseguirlo? Altre idee?

È stato utile?

Soluzione

Non c'è bisogno di inviare un driver a Microsoft. Dovete firmare il conducente con un cross-firma-certificato. Si otterrà un nag screen in questo modo, ma questo non è vietato!

Ci sono stati (sono) molti tentativi di fare proprio quello che si vuole fare. Questi sono 'appena' tollerati, ma questi driver può essere vietato in qualsiasi momento. (Con la revoca tua firma)

Il processo è molto semplice:

  1. Caricare il driver firmato.
  2. Fornire un IoControl in cui programmi in modalità utente può inviare la memoria al kernel.
  3. Cambia il bit di questa memoria eseguire, e basta chiamare un indirizzo in questa memoria.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top