Nyligen, när jag skrev programvara, kom jag på en idé: om jag kör ett program .exe väl skyddat, men om dll:n inte är skyddad, kommer min applikation att använda dll-filen, kommer andra att felsöka mitt program via dll-filen?
Idag skriver vi ett speciellt program för att testa det, låt oss använda applikationen för att anropa en metod i dll:n, enligt följande:
Koden är enkel:
DLL-kod:
Appkod:
Sedan skapar jag ett nytt projekt, skapar ett nytt klassbibliotek och kopierar samma typ och cs-fil, enligt följande:
Låt oss ersätta den genererade dll:n med följande figur:
Programmet anropar framgångsrikt dll-metoden vi förfalskade, hur kan vi förhindra att den dll vi genererat förfalskas?
Jag kom på en enkel idé: lägg till en resursfil i applikationen, fyll i dll-filen som ska laddas, och md5-värdet för filen, startpunkten för programmet, och först kontrollera md5-värdet för den dll som behöver laddas
Om MD5-värdet i DLL-filen är inkonsekvent med MD5-värdet i resurslistan betyder det att DLL-filen har förfalskats eller manipulerats med illvilja. Det har inte praktiserats, det är logiskt genomförbart!
|