Kürzlich kam mir beim Schreiben von Software die Idee: Wenn ich ein Programm ausführe, .exe gut geschützt, aber wenn die DLL nicht geschützt ist, wird meine Anwendung die DLL-Datei verwenden – werden andere mein Programm über die DLL-Datei debuggen?
Heute schreiben wir ein spezielles Programm, um es zu testen, verwenden wir die Anwendung, um eine Methode in der DLL aufzurufen, wie folgt:
Der Code ist einfach:
DLL-Code:
App-Code:
Dann erstelle ich ein neues Projekt, erstelle eine neue Klassenbibliothek und kopiere denselben Typ und dieselbe CS-Datei, wie folgt:
Ersetzen wir die generierte dll durch folgende Abbildung:
Das Programm ruft erfolgreich die von uns gefälschte dll-Methode auf – wie können wir verhindern, dass die von uns erzeugte DLL gefälscht wird?
Mir kam eine einfache Idee: Fügen Sie der Anwendung eine Ressourcendatei hinzu, füllen Sie die zu ladende DLL-Datei aus und geben den md5-Wert der Datei, den Startpunkt des Programms aus, und prüfen Sie zuerst den MD5-Wert der zu ladenden DLL, der geladen werden muss.
Wenn der MD5-Wert der DLL-Datei nicht mit dem MD5-Wert der Datei in der Ressourcenliste übereinstimmt, bedeutet das, dass die DLL-Datei gefälscht oder böswillig manipuliert wurde. Es wurde nicht praktiziert, es ist logisch machbar!
|