Recentemente, mentre scrivevo software, mi è venuta un'idea: se eseguisco un programma .exe ben protetto, ma se la dll non è protetta, la mia applicazione userà il file dll, altri debugeranno il mio programma tramite il file dll?
Oggi, scriviamo un programma speciale per testarlo, usiamo l'applicazione per chiamare un metodo nella dll, come segue:
Il codice è semplice:
Codice DLL:
Codice app:
Poi, creo un nuovo progetto, creo una nuova libreria di classi e copio lo stesso tipo e file CS, come segue:
Sostituiamo la dll generata con la seguente figura:
Il programma chiama con successo il metodo dll che abbiamo forgiato, come possiamo impedire che il dll che abbiamo generato venga forgiato?
Ho pensato a un'idea semplice: aggiungere un file di risorsa all'applicazione, compilare il file dll da caricare, e il valore md5 del file, il punto di ingresso dell'esecuzione del programma, e prima controllare il valore md5 del dll da caricare
Se il valore MD5 del file DLL è incoerente con il valore MD5 del file nella lista risorse, significa che il file DLL è stato falsificato o manomesso in modo doloso. Non è mai stato praticato, è logicamente fattibile!
|