Onlangs, bij het schrijven van software, kwam ik op het idee: als ik een programma draai, .exe goed beschermd, maar als de dll niet beschermd is, mijn applicatie het dll-bestand gebruikt; zullen anderen mijn programma dan via het dll-bestand debuggen?
Laten we vandaag een speciaal programma schrijven om het te testen, laten we de applicatie gebruiken om een methode in de dll aan te roepen, als volgt:
De code is eenvoudig:
DLL-code:
App-code:
Daarna maak ik een nieuw project aan, maak ik een nieuwe classbibliotheek aan en kopieer ik hetzelfde type en cs-bestand, als volgt:
Laten we de gegenereerde dll vervangen door de volgende figuur:
Het programma roept de dll-methode die we hebben gesmeed succesvol aan, hoe kunnen we voorkomen dat de dll die we hebben gegenereerd wordt vervalst?
Ik bedacht een eenvoudig idee: voeg een resourcebestand toe aan de applicatie, vul het dll-bestand in dat geladen moet worden, en de md5-waarde van het bestand, het instappunt van het uitgevoerde programma, en controleer eerst de md5-waarde van de dll die geladen moet worden
Als de MD5-waarde van het DLL-bestand niet consistent is met de MD5-waarde van het bestand in de resourcelijst, betekent dit dat het DLL-bestand is vervalst of kwaadwillig is gemanipuleerd. Het is niet beoefend, het is logisch haalbaar!
|