Nedávno, keď som písal softvér, som dostal nápad, že ak spustím program .exe dobre chránený, ale ak dll nie je chránený, moja aplikácia použije dll súbor, budú ostatní ladiť môj program cez dll súbor?
Dnes napíšme špeciálny program na testovanie, použijme aplikáciu na zavolanie metódy v DLL, nasledovne:
Kód je jednoduchý:
DLL kód:
Kód aplikácie:
Potom vytvorím nový projekt, vytvorím novú knižnicu triedy a skopírujem ten istý typ a cs súbor, nasledovne:
Nahradme vygenerovaný dll nasledujúcim obrázkom:
Program úspešne volá metódu dll, ktorú sme sfalšovali, ako môžeme zabrániť tomu, aby sa dll, ktorú sme vytvorili, sfalšovala?
Prišiel som s jednoduchým nápadom: pridať súbor zdrojov do aplikácie, vyplniť súbor dll, ktorý sa načíta, a hodnotu md5 súboru, vstupný bod spustenia programu, a najprv skontrolovať hodnotu md5 dll, ktorú treba načítať
Ak je hodnota MD5 súboru DLL nekonzistentná s hodnotou MD5 súboru v zozname zdrojov, znamená to, že súbor DLL bol sfalšovaný alebo úmyselne upravený. Nebolo to praktizované, logicky je to možné!
|