Πρόσφατα, όταν έγραφα λογισμικό, μου ήρθε μια ιδέα, εάν εκτελέσω ένα πρόγραμμα .exe καλά προστατευμένο, αλλά εάν το dll δεν προστατεύεται, η εφαρμογή μου θα χρησιμοποιήσει το αρχείο dll, θα διορθώσουν άλλοι το πρόγραμμά μου μέσω του αρχείου dll;
Σήμερα, ας γράψουμε ένα ειδικό πρόγραμμα για να το δοκιμάσουμε, ας χρησιμοποιήσουμε την εφαρμογή για να καλέσουμε μια μέθοδο στο dll, ως εξής:
Ο κώδικας είναι απλός:
Κωδικός DLL:
Κωδικός εφαρμογής:
Στη συνέχεια, δημιουργώ ένα νέο έργο, δημιουργώ μια νέα βιβλιοθήκη κλάσεων και αντιγράφω τον ίδιο τύπο και αρχείο cs, ως εξής:
Ας αντικαταστήσουμε το παραγόμενο dll με το ακόλουθο σχήμα:
Το πρόγραμμα καλεί με επιτυχία τη μέθοδο dll που σφυρηλατήσαμε, πώς μπορούμε να αποτρέψουμε την πλαστογράφηση του dll που δημιουργήσαμε;
Σκέφτηκα μια απλή ιδέα, να προσθέσω ένα αρχείο πόρου στην εφαρμογή, να συμπληρώσω το αρχείο dll που θα φορτωθεί και την τιμή md5 του αρχείου, το σημείο εισόδου της εκτέλεσης του προγράμματος και πρώτα να ελέγξω την τιμή md5 του dll που πρέπει να φορτωθεί
Εάν η τιμή MD5 του αρχείου DLL δεν συμφωνεί με την τιμή MD5 του αρχείου στη λίστα πόρων, αυτό σημαίνει ότι το αρχείο DLL έχει πλαστογραφηθεί ή έχει παραβιαστεί κακόβουλα. Δεν έχει εφαρμοστεί, είναι λογικά εφικτό!
|