Nedávno jsem při psaní softwaru přišel s nápadem, že pokud spustím program .exe dobře chráněný, ale pokud dll není chráněná, moje aplikace použije dll soubor, budou ostatní ladit můj program přes dll soubor?
Dnes napíšeme speciální program k jeho otestování – použijme aplikaci k volání metody v DLL, a to následovně:
Kód je jednoduchý:
DLL kód:
Kód aplikace:
Pak vytvořím nový projekt, novou knihovnu tříd a zkopíruji stejný typ a cs soubor, a to následovně:
Nahraďme generovaný dll následujícím obrázkem:
Program úspěšně volá metodu dll, kterou jsme vytvořili, jak můžeme zabránit tomu, aby byla vytvořená dll zfalšována?
Napadl mě jednoduchý nápad: přidat do aplikace resource soubor, vyplnit dll soubor k načtení a hodnotu md5 souboru, výchozí bod spuštění programu, a nejdřív zkontrolovat hodnotu md5 dle DLL, kterou je potřeba načíst
Pokud je hodnota MD5 souboru DLL nekonzistentní s hodnotou MD5 souboru v seznamu zdrojů, znamená to, že soubor DLL byl zfalšován nebo úmyslně upraven. Nebyla praktikována, logicky je to proveditelná!
|