
το προϊόν μου έχει πολλές συνιστώσες: ASP.NET, Έντυπα των Windows App και Windows Υπηρεσία. 95% ή έτσι του κώδικα είναι γραμμένο σε VB.NET.


Για λόγους πνευματικής ιδιοκτησίας, θα πρέπει να συσκοτίσετε τον κωδικό, και μέχρι τώρα έχω χρησιμοποιήσει μια έκδοση του dotfuscator που είναι σήμερα άνω των 5 ετών. Σκέφτομαι ότι είναι καιρός να προχωρήσουμε σε ένα νέο εργαλείο γενιάς. Αυτό που ψάχνω είναι ένας κατάλογος των απαιτήσεων που θα πρέπει να λάβετε υπόψη κατά την αναζήτηση για μια νέα συσκοτιστής.


Αυτό που ξέρω ότι θα πρέπει να αναζητήσει μέχρι τώρα:


* ***Σειριοποίησης / De-serialization*** . Στην τρέχουσα λύση μου, απλά πείτε το εργαλείο **δεν** με θολώνω οποιαδήποτε μέλη τα δεδομένα της κατηγορίας, διότι ο πόνος του να μην είναι σε θέση να φορτώσει τα δεδομένα που προηγουμένως σε συνέχειες είναι απλά πάρα πολύ μεγάλη.
* ***Ενσωμάτωση με τη διαδικασία της μεταγλώττισης***
* ***Εργασία με ASP.NET*** . Στο παρελθόν, έχω διαπιστώσει ότι αυτό προβληματική λόγω των μεταβαλλόμενων .dll ονόματα (που συχνά έχουν μία ανά σελίδα) - το οποίο χειρίζεται καλά δεν είναι όλα τα εργαλεία.

 
NET εργαλεία συσκότιση / στρατηγικής
====================================



Επιστροφή με .Net 1.1 συσκότιση ήταν απαραίτητη: Κωδικός μεταγλώττιση ήταν εύκολο, και θα μπορούσε να πάει από το συγκρότημα, με την IL, με C # κώδικα και έχουν συνταχθεί και πάλι με πολύ λίγη προσπάθεια.


Τώρα με .Net 3.5 δεν είμαι καθόλου σίγουρος. Δοκιμάστε μεταγλώττιση ένα συγκρότημα 3.5? αυτό που παίρνετε είναι μια μακρά μακριά από τη σύνταξη.


Προσθέστε τις βελτιστοποιήσεις από 3,5 (πολύ καλύτερα από 1,1) και τον τρόπο ανώνυμο τύπων, αντιπροσώπους και ούτω καθεξής αντιμετωπίζονται με αντανάκλαση (που είναι ένας εφιάλτης να ξαναμεταγλωττίσετε). Προσθέστε λάμδα εκφράσεις, compiler «μαγεία», όπως Linq-σύνταξη και `var`, και C # 2 λειτουργίες, όπως `yield`(η οποία οδηγεί σε νέες κατηγορίες με δυσανάγνωστο όνομα). Decompiled κωδικό σας καταλήγει σε μεγάλο μακριά από μεταγλωττιστεί.


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


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

 

Έχω χρησιμοποιήσει smartassembly. Βασικά, μπορείτε να επιλέξετε ένα αρχείο DLL και επιστρέφει ασαφή. Φαίνεται να λειτουργεί μια χαρά και είχα κανένα πρόβλημα μέχρι τώρα. Πολύ, πολύ εύκολο στη χρήση.

 

Αν ψάχνετε για ένα δωρεάν μία θα μπορούσατε να δοκιμάσετε DotObfuscator Έκδοση της Κοινότητας που έρχεται με το Visual Studio ή [Eazfuscator.NET](http://www.gapotchenko.com/eazfuscator.net) .




---


[Από 29 Ιουν 2012](http://blog.gapotchenko.com/eazfuscator.net/code-virtualization) , Eazfuscator.NET είναι πλέον εμπορικά. Η τελευταία δωρεάν διαθέσιμη έκδοση είναι η 3.3.

 

Έχω δοκιμάσει σχεδόν κάθε συσκοτιστής στην αγορά και SmartAssembly είναι το καλύτερο κατά τη γνώμη μου.

 

Έχουμε δοκιμάσει μια σειρά από obfuscators. Κανένας από αυτούς εργάζονται σε ένα μεγάλο πελάτη app / server που χρησιμοποιεί το απομακρυσμένης πρόσβασης. Το πρόβλημα είναι ότι ο πελάτης και ο διακομιστής μερίδιο μερικά DLL, και δεν έχουμε βρει κανένα συσκοτιστής που μπορεί να το χειριστεί.


Έχουμε δοκιμάσει DotFuscator Pro, SmartAssembly, XenoCode, Σαλαμάνδρα, και αρκετές μικρές εφαρμογές χρόνο των οποίων τα ονόματα ξεφύγουν από μένα.


**Ειλικρινά, είμαι πεπεισμένος συσκότισης είναι ένα μεγάλο hack.**


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

 

Έχω obfuscating κώδικα στην ίδια εφαρμογή από την Καθαρή 1, και αυτό είναι ένα σημαντικό πονοκέφαλο από την άποψη της συντήρησης. Όπως σας έχω αναφέρει, το πρόβλημα σειριακή μπορεί να αποφευχθεί, αλλά είναι πολύ εύκολο να κάνει ένα λάθος και θολώνω κάτι που δεν ήθελε ασαφή. Είναι εύκολο να σπάσει την κατασκευή, ή για να αλλάξετε το μοτίβο συσκότιση και να μην είναι σε θέση να ανοίξει τα παλιά αρχεία. Πλέον μπορεί να είναι δύσκολο να βρείτε τι πήγε στραβά και πού.


Η επιλογή μας ήταν Xenocode, και ήταν εγώ να κάνω την επιλογή και πάλι σήμερα θα προτιμούσα να μην θολώνω τον κωδικό ή χρησιμοποιήστε Dotfuscator. 

 

Έχω, επίσης, τη χρήση SmartAssembly. Βρήκα ότι Ezrinz Καθαρά αντιδραστήρα πολύ καλύτερα για μένα στο .net εφαρμογές. Είναι συσκοτίζει, υποστηρίζουν Mono, συγχωνεύει συνελεύσεις και επίσης έχει και μια πολύ ωραία ενότητα αδειοδότησης για τη δημιουργία δοκιμαστική έκδοση ή να συνδέσουν την άδεια σε ένα συγκεκριμένο μηχάνημα (πολύ εύκολο να εφαρμοστούν). Η τιμή είναι επίσης πολύ ανταγωνιστική και όταν χρειάστηκε υποστήριξη που όπου γρήγορα.
[Eziriz](http://www.eziriz.com/)


Ακριβώς για να είναι σαφής είμαι απλά ένα custumer που του αρέσει το προϊόν και σε καμία περίπτωση δεν σχετίζονται με την εταιρεία.

 

Θα πρέπει να χρησιμοποιήσετε ό, τι είναι φθηνότερη και πιο γνωστός για την πλατφόρμα σας και να το ονομάσουμε την ημέρα. Συσκότιση των γλωσσών υψηλού επιπέδου είναι ένα δύσκολο πρόβλημα, γιατί VM ρεύματα opcode δεν πάσχουν από τα δύο μεγαλύτερα προβλήματα μητρική ρεύματα opcode κάνετε: Λειτουργία / ταυτοποίησης μέθοδο και εγγραφείτε aliasing.


Τι πρέπει να γνωρίζετε για το bytecode αντιστροφή είναι ότι είναι ήδη καθιερωμένη πρακτική για τους ελεγκτές ασφαλείας να εξετάσει κατ 'ευθείαν κωδικό X86 και να βρει τα τρωτά σημεία σε αυτό. Σε πρώτων X86, μπορείτε να όχι απαραίτητα να βρείτε ακόμη και έγκυρη λειτουργίες, πόσο μάλλον να παρακολουθήσετε μια τοπική μεταβλητή διάρκεια μιας κλήσης συνάρτησης. Σχεδόν σε καμία περίπτωση δεν μητρική Αντιστροφείς κωδικό πρόσβασης για τη λειτουργία και τα ονόματα των μεταβλητών --- εκτός και αν αναθεώρηση κώδικα της Microsoft, για τα οποία MSFT παρέχει πρόθυμα ότι οι πληροφορίες στο κοινό.


«Dotfuscation» δουλεύει κυρίως με τη λειτουργία και τα ονόματα των μεταβλητών κρυπτογράφησης. Είναι ίσως καλύτερα να το κάνετε αυτό από ό, τι δημοσιεύει κωδικό με πληροφορίες εντοπισμού σφαλμάτων σε επίπεδο, όπου ο ανακλαστήρας είναι κυριολεκτικά να σταματήσει τον πηγαίο κώδικα σας. Αλλά ό, τι κάνετε πέρα ​​από αυτό είναι πιθανό να μπει σε φθίνουσες αποδόσεις.

 

Έχω πρόσφατα προσπάθησε σωληνώσεις την έξοδο από μία δωρεάν συσκοτιστής στο άλλο χωρίς συσκοτιστής - δηλαδή Dotfuscator CE και το νέο συσκοτιστής Βαβέλ για CodePlex. Περισσότερες λεπτομέρειες [για το blog μου](http://harriyott.com/2008/09/obfuscations-what-you-need-if-you-want.aspx) .


Όσο για serialization, έχω προτείνει να κώδικα σε ένα διαφορετικό αρχείο DLL και περιλαμβάνεται ότι στο έργο. I αιτιολογημένη ότι δεν υπήρχαν μυστικά εκεί που δεν βρίσκονται στην XML ούτως ή άλλως, οπότε δεν χρειάζεται συσκότιση. Αν υπάρχει κάποια σοβαρή κώδικα σε αυτές τις κατηγορίες, χρησιμοποιώντας τη μερική κλάσεις στο κύριο συγκρότημα θα πρέπει να το καλύψει.

 

Είχα κανένα πρόβλημα με Smartassembly.

 

Έχουμε ένα multi tier εφαρμογή με asp.net και διασύνδεση winform που υποστηρίζει επίσης απομακρυσμένης πρόσβασης. Είχα κανένα πρόβλημα με τη χρήση οποιουδήποτε συσκοτιστής με εξαίρεση τον τύπο κρυπτογράφησης που δημιουργεί ένα φορτωτή που μπορεί να είναι προβληματική σε όλα τα είδη των απροσδόκητους τρόπους και απλά δεν αξίζει τον κόπο κατά τη γνώμη μου. Στην πραγματικότητα η συμβο

