Αποκρύψτε εφαρμογές που δημιουργήθηκαν χρησιμοποιώντας dotfuscator (Έκδοση Visaul Studio 2022)

Σελίδα ενημέρωση :
Ημερομηνία δημιουργίας σελίδας :

περίληψη

Οι εφαρμογές που βασίζονται στη σειρά πλαισίων .NET δημιουργούνται σε αυτό που ονομάζεται κοινή ενδιάμεση γλώσσα, ώστε να μπορούν να διαβαστούν σε μια μορφή κοντά στον αρχικό πηγαίο κώδικα χρησιμοποιώντας εργαλεία αποσυναρμολόγησης και τα παρόμοια. Αυτή η ενότητα περιγράφει τον τρόπο συσκότισης κλάσεων και ονομάτων μεθόδων σε εύκολα δυσανάγνωστες μορφές χρησιμοποιώντας τη δωρεάν έκδοση του Dotfuscator, του εργαλείου συσκότισης που συνοδεύει το Visual Studio.

Περιγράφεται χρησιμοποιώντας το Visual Studio 2022, αλλά μπορεί επίσης να χρησιμοποιηθεί και σε άλλες εκδόσεις του Dotfuscator.

Περιβάλλον λειτουργίας

Οπτικό στούντιο
  • Visual Studio 2022

Σχετικά με το Dotfuscator

Το Dotfuscator είναι ένα εργαλείο συσκότισης που καθιστά δύσκολη την ανάγνωση του πηγαίου κώδικα κατά την αποσυναρμολόγηση για εφαρμογές που έχουν γραφτεί με την οικογένεια πλαισίων .NET (εφεξής .NET). Το Dotfuscator συνοδεύεται από το Visual Studio δωρεάν και έναντι αμοιβής.

Η δωρεάν έκδοση δεν είναι διαθέσιμη, εκτός εάν πολλές από τις δυνατότητές της είναι περιορισμένες ή έχει ξεκινήσει το Visual Studio, αλλά οποιοσδήποτε μπορεί να τη χρησιμοποιήσει εφόσον έχει εγκατεστημένο το Visual Studio. Η πληρωμένη έκδοση έχει πολλές ισχυρές δυνατότητες συσκότισης που δεν βρίσκονται στη δωρεάν έκδοση, αλλά προσφέρεται σε τιμή που είναι δύσκολο για το ευρύ κοινό να αντέξει οικονομικά.

Το Dotfuscator έχει διαφορετικές δυνατότητες, τιμές και εκδόσεις ανάλογα με την έκδοση, οπότε ανατρέξτε στην ακόλουθη αρχική σελίδα για λεπτομέρειες.

Σχετικά με την αποσυναρμολόγηση

Ανέφερα νωρίτερα ότι οι εφαρμογές που είναι γραμμένες στο .NET μπορούν εύκολα να αποσυναρμολογήσουν και να διαβάσουν τον αρχικό πηγαίο κώδικα, αλλά αυτό που συμβαίνει στην πραγματικότητα είναι ότι αν αποσυναρμολογήσετε ένα αρχείο .exe (ή .dll αρχείο) όπως φαίνεται στο παρακάτω σχήμα, μπορείτε σχεδόν να αναπαραγάγετε τον αρχικό πηγαίο κώδικα, όπως ο χώρος ονομάτων, το όνομα κλάσης, το όνομα της μεθόδου κ.λπ.

Τύποι προγραμμάτων που πρέπει να συσκοτιστούν

Ισχύει κυρίως για προγράμματα που διανέμονται και εκτελούνται σε απροσδιόριστους χρήστες. Για παράδειγμα, εφαρμογές επιφάνειας εργασίας. Αντίθετα, οι εφαρμογές Web που δυσκολεύονται να αποκτήσουν απευθείας πρόσβαση σε αρχεία προγραμμάτων είναι λιγότερο σημαντικές για τη συσκότιση.

Αυτή τη φορά, εξετάζουμε ένα έργο στο WPF, μια εφαρμογή επιφάνειας εργασίας.

Εγκατάσταση του dotfuscator

Αυτή η εφαρμογή συνοδεύεται από το Visual Studio 2022, αλλά δεν περιλαμβάνεται στην τυπική εγκατάσταση (σε ορισμένα προηγούμενα Visual Studios μπορεί να εγκατασταθεί από την αρχή).

Για να προσθέσετε ένα dotfuscator: Ξεκινήστε το Visaul Studio και επιλέξτε Λήψη εργαλείων και λειτουργιών από τα Εργαλεία.

Επιλέξτε "Μεμονωμένα στοιχεία" από την παραπάνω καρτέλα, επιλέξτε "Προληπτική προστασία - Dotfuscator" στην ομάδα "Εργαλεία κώδικα" και κάντε κλικ στο κουμπί Εγκατάσταση στην κάτω δεξιά γωνία. Όταν το κάνετε αυτό, κλείστε την κονσόλα Visual Studio.

Διαδικασία συσκότισης

Περιγράφει τα βήματα για να κάνετε αυτά τα ονόματα συγκεχυμένα και συγκεχυμένα.

Δημιουργήστε μια εφαρμογή στο Visual Studio, δημιουργήστε .exe αρχείο και, στη συνέχεια, κάντε κλικ στο αρχείο . Δημιουργήστε ένα αρχείο dll. Μέχρι στιγμής, αυτό είναι το ίδιο με τη δημιουργία μιας κανονικής εφαρμογής. Η εφαρμογή που δημιουργείτε θα πρέπει να προορίζεται για εκείνες που δημιουργούνται στη δομή κυκλοφορίας. (Επειδή συνήθως δεν δημοσιεύετε στο Debug.)

Αφού δημιουργήσετε .exe ή .dll, επιλέξτε Εργαλεία από το μενού του Visual Studio και, στη συνέχεια, επιλέξτε Προληπτική προστασία - Κοινότητα dotfuscator.

Εμφανίζεται η οθόνη εγγραφής, αλλά δεν απαιτείται, οπότε αν δεν είναι απαραίτητο, κάντε κλικ στο κουμπί ακύρωσης ως έχει.

Παραμείνετε και κάντε κλικ στο Εντάξει κουμπί.

Ξεκινά το dotfuscator. Η εφαρμογή λειτουργεί από μόνη της, ώστε να μπορείτε να αποκρύψετε αρχεία που δεν σχετίζονται με το τρέχον ανοιχτό έργο. (Στην περίπτωση της δωρεάν έκδοσης της ίδιας της εφαρμογής, θεωρείται ότι έχει ξεκινήσει το Visual Studio.) )

Σε αυτό το άρθρο, θα συσκοτίσω ένα έργο εφαρμογής .NET 6.0 WPF που δημιουργήθηκε με προεπιλογές ως δείγμα.

Επιλέξτε "Εισαγωγή" από τη λίστα στα αριστερά και κάντε κλικ στο κουμπί "+".

Επιλέξτε το αρχείο προγράμματος που θέλετε να αποκρύψετε. Οι εφαρμογές που έχουν γραφτεί στο .NET Framework συχνά έχουν συσκοτίσει .exe, αλλά στα .NET και .NET Core, τα προγράμματα είναι συχνά .dll οντότητες. Οι εφαρμογές NET WPF θα έχουν επίσης .dll οντότητες, οπότε επιλέξτε .dll.

Θα προστεθεί στη λίστα. Εάν αποτελείται από πολλά DLL, προσθέστε περισσότερα από ένα.

Αφού προσθέσετε το αρχείο προορισμού, κάντε κλικ στο κουμπί "Κατασκευή" από τη γραμμή εργαλείων.

Θα σας ζητηθεί πού να αποθηκεύσετε το συσκοτισμένο αρχείο έργου, οπότε καθορίστε το. Η τοποθεσία μπορεί να είναι αυθαίρετη, αλλά μπορεί επίσης να είναι η θέση εξόδου ενός συγκεχυμένου προγράμματος. Αποθηκεύει την εισαγωγή σας και θα ανοίξει αυτό το αρχείο έργου συσκότισης εάν θέλετε να το συσκοτίσετε ξανά. Η επέκταση είναι ". xml".

Εάν η κατασκευή έχει ξεκινήσει και η "Δόμηση ολοκληρώθηκε" εμφανίζεται στο παρακάτω μήνυμα, αυτό υποδεικνύει την επιτυχή ολοκλήρωση. Η οθόνη εμφανίζει το αρχείο καταγραφής δόμησης και μια λίστα με συσκοτισμένες και μεταβλητές.

Επιλέξτε "Αποτέλεσμα" από τη λίστα στα αριστερά για να δείτε λεπτομέρειες σχετικά με τον τρόπο αλλαγής των ονομάτων κλάσεων και μεθόδων.

Τα ονόματα κλάσεων και τα ονόματα μεθόδων στο δέντρο στα δεξιά, όπως "->", είναι τα ονόματα μετά τη συσκότιση. Αλλάζοντας το όνομα της κλάσης ή το όνομα της μεθόδου σε ένα όνομα χωρίς νόημα όπως αυτό, μπορείτε να κάνετε τα περιεχόμενα του πηγαίου κώδικα δύσκολα στην ανάγνωση ακόμα και αν αποσυναρμολογηθεί.

Τα συσκοτισμένα προγράμματα αποθηκεύονται σε ένα φάκελο που ονομάζεται "Dotfuscated" στη θέση όπου αποθηκεύσατε το αρχείο έργου.

Το Map.xml είναι ένα αρχείο αποτελεσμάτων συσκότισης, ώστε να μπορείτε να το διαγράψετε με ασφάλεια.

Δεδομένου ότι το .NET 6.0 WPF δεν μπορεί να ξεκινήσει μόνο από ένα DLL, αντιγράψτε τα "XXXX.exe" και "XXXX.runtimeconfig.json" που δημιουργήθηκαν κατά τη στιγμή της εξόδου κατασκευής στον ίδιο φάκελο και ξεκινήστε το. Εάν μπορείτε να ξεκινήσετε κανονικά, δεν υπάρχει πρόβλημα προς το παρόν. Εάν δεν μπορείτε να το ξεκινήσετε, ενδέχεται να λείπουν αρχεία ή μπορεί να δημιουργείτε ένα πρόγραμμα που γίνεται ασυνεπές λόγω συσκότισης.

Εάν αναλύσετε το πρόγραμμα που έχει πραγματικά συσκοτιστεί, θα δείτε κάποια ίχνη συσκότισης. Το πρώτο φύλλο του παρακάτω σχήματος είναι πριν από τη συσκότιση και το δεύτερο είναι μετά από συσκότιση.

Σημειώστε ότι τα ονόματα κλάσεων που ορίζονται σε βιβλιοθήκες .NET δεν υπόκεινται σε μετονομασία επειδή υπάρχουν ως πλαίσιο.

Αυτή τη φορά, συσκότισα το προεπιλεγμένο έργο που δημιουργήθηκε ως έχει, οπότε νομίζω ότι υπάρχει μια εικόνα που σχεδόν δεν είναι συγκεχυμένη, αλλά νομίζω ότι το αποτέλεσμα της συσκότισης γίνεται σαφές επειδή όσο μεγαλύτερο είναι το έργο, τόσο πιο μοναδικές θα αυξηθούν.

Επίσης, παρόλο που έχουμε συμπεριλάβει τη διαδικασία στη δωρεάν έκδοση αυτή τη φορά, η πληρωμένη έκδοση επιτρέπει πιο περίπλοκη συσκότιση και επίσης αποτρέπει την αποσυναρμολόγηση. Ωστόσο, η συσκότιση έχει διάφορες δυσμενείς επιπτώσεις και ενδέχεται να συμβεί, οπότε όταν πραγματοποιείται συσκότιση, είναι απαραίτητο να το κάνετε ενώ εξετάζετε αν θα λειτουργήσει σωστά από την αρχή του σχεδιασμού.

Εξαίρεση συσκότισης

Αν έχετε ονόματα κλάσεων ή ιδιοτήτων που δεν θέλετε να αποκρύψετε, μπορείτε να τα εξαιρέσετε.

Κατά τη φόρτωση της συγκρότησης, επιλέξτε Μετονομασία > Εξαίρεση από την αριστερή πλευρά της οθόνης. Δεδομένου ότι εμφανίζονται τα περιεχόμενα της συναρμολόγησης, θα ελέγξω αυτά που δεν θέλω να συσκοτίσω.

Είναι δυνατόν να αποκλειστεί η συσκότιση σε κοκκώδες επίπεδο, αλλά νομίζω ότι είναι ευκολότερο να το προσαρμόσετε σε βάση χώρου ονομάτων.

Λειτουργία βιβλιοθήκης

Όταν επιλέγετε το συγκρότημα εισόδου, μπορείτε να δείτε ότι είναι επιλεγμένο το στοιχείο "Λειτουργία βιβλιοθήκης".

Η "λειτουργία βιβλιοθήκης" είναι η προσάρτηση σε DLL που μπορεί να κληθούν από άλλα προγράμματα. Εάν ελεγχθεί, οι δημόσιες και οι ιδιότητες που καλούνται από άλλα προγράμματα εξαιρούνται από τη συσκότιση.

Ωστόσο, σε γενικές γραμμές, είναι σπάνιο να εκτεθεί μια βιβλιοθήκη που ονομάζεται γενετικά από άλλα προγράμματα και νομίζω ότι συχνά συσκοτίζεται σε εφαρμογές που λειτουργούν μόνες τους, οπότε είναι εντάξει να αφαιρέσετε βασικά αυτόν τον έλεγχο.

Συσκότιση .exe ενός αρχείου (μη επιβεβαιωμένη)

Οι έρευνες για αυτό το στοιχείο στο Visual Studio 2022 δεν επιβεβαιώνονται προς το παρόν.

Πιθανότατα θα είναι συσκότιση με το MSBuild, αλλά το βάζω σε αναμονή λόγω της έλλειψης πληροφοριών αυτή τη στιγμή.