Pred kratkim sem med pisanjem programske opreme dobil idejo: če zaženem program, .exe dobro zaščiten, a če DLL ni zaščiten, bo moja aplikacija uporabljala dll datoteko, ali bodo drugi odpravljali napake v mojem programu preko dll datoteke?
Danes napišimo poseben program za testiranje, uporabimo aplikacijo za klic metode v DLL, kot sledi:
Koda je preprosta:
DLL koda:
Koda aplikacije:
Nato ustvarim nov projekt, ustvarim novo knjižnico razredov in kopiram isto datoteko tipa in cs, kot sledi:
Zamenjajmo generirani dll z naslednjo sliko:
Program uspešno pokliče metodo dll, ki smo jo ponaredili, kako lahko preprečimo, da bi se dll, ki smo ga ustvarili, ponarejal?
Spomnil sem se na preprosto idejo: dodati datoteko z viri v aplikacijo, izpolniti datoteko dll, ki se naloži, in vrednost md5 datoteke, vstopno točko zagona programa, in najprej preveriti vrednost md5 za dll, ki ga je treba naložiti
Če je vrednost MD5 datoteke DLL neskladna z MD5 vrednostjo datoteke na seznamu virov, to pomeni, da je bila datoteka DLL ponarejena ali zlonamerno spremenjena. To ni bilo izvajano, logično je izvedljivo!
|