2013-07-18 20 views
5

Diciamo che voglio che i miei clienti diano la possibilità di creare plug-in per la loro applicazione, ma non voglio renderli degli hack che colpiscono la memoria del mio programma, è possibile prevenirlo?È possibile limitare la funzionalità della DLL?

Oppure caricare la DLL in una sorta di area di memoria in cui non avrà accesso alla memoria del programma principale?

risposta

4

È possibile consentire l'esecuzione dei plug-in in un processo separato. Qualsiasi informazione necessaria al plugin viene passata come messaggio a quel processo. Qualsiasi risultato richiesto dall'applicazione viene ricevuto come messaggio. Puoi avere un processo separato per plugin, oppure puoi avere tutti i plug-in eseguiti nello stesso processo.

Per inciso, le versioni più moderne di una funzionalità di plug-in utilizzano un ambiente di runtime incorporato, ad esempio la JVM. Quindi, il plug-in è in esecuzione nello stesso processo dell'applicazione, ma entro i confini di un ambiente virtuale, che limita efficacemente lo scompiglio che il plug-in può danneggiare sul tuo programma. In questo scenario, non ci sono DLL, ma codice di script o codice byte.

1

La risposta breve è "no".

Risposta lunga: Una DLL viene caricata in memoria e apparirà come parte del file eseguibile stesso a tutti gli effetti, sia dal punto di vista del processo, sia dal punto di vista del sistema operativo. Sicuramente la DLL è (forse) condivisa tra più eseguibili, quindi il sistema operativo deve tenere traccia di quanti "utenti" ci sono di una particolare DLL, ma dal punto di vista di un processo, fa parte dell'eseguibile. È un intervallo di indirizzi separato, ma i diritti e le autorizzazioni per il contenuto della DLL sono esattamente uguali a qualsiasi altra DLL o all'esecutivo principale stesso.

Se si dispone di plug-in, è necessario FIDUCIA dei plug-in. Se ciò non è ciò che si desidera, non utilizzare il modello DLL per creare plug-in (ad esempio, utilizzare un'area di memoria condivisa e un altro eseguibile per consentire solo l'accesso alla memoria condivisa).

Problemi correlati