Θέλω να δώσω λίγο feedback σχετικά με το αν και πόσο χρειάζονται οι εφαρμογές κλείδωμα ή πρέπει να είναι όλα ελεύθερα και να βρεθεί άλλος τρόπος, με βάση την εμπειρία που είχαμε στη Unibrain. Εμείς btw κάνουμε native development.
To software μας παίζει πάνω σε κάρτες Firewire, που έχουν ένα μοναδικό ID η καθεμία.
Αρχικά βγάζαμε ένα registration key το οποίο δίναμε στους πελάτες, το οποίο για "ευκολία" δεν ήταν δεμένο με το ID της κάρτας ώστε αν τυχόν αλλάξεις κάρτα να μη θες νέο key. To licence agreement έλεγε σαφώς ότι το key ήταν για έναν υπολογιστή μόνο.
Αποτέλεσμα; Μαζική κατάχρηση και καταστρατήγηση του licence agreement. Αγοράζανε κάρτες από αλλού και βάζανε παντού το ίδιο key. Και να φανταστείτε ότι οι πελάτες μας είναι software houses (πουλάμε firewire development kits)!!!
Στη συνέχεια βάλαμε ένα registration key που ήταν δεμένο με την κάρτα και φυσικά αρχίσαν οι "γκρίνιες" ότι είναι δύσχρηστο κλπ, τα οποία φυσικά δεν ήταν τίποτα παραπάνω από φτωχές δικαιολογίες όπως φάνηκε από τα keys που "ξαφνικά" άρχισαν να αγοράζουν.
Παλιότερα είχαμε κάποια έκδοση με USB Hasp και όταν την κόψαμε, υπήρχαν πελάτες που ΔΕΝ αναβαθμίζαν για χρόνια, μόνο και μόνο επειδή τους κόψαμε αυτό (και άρα δεν μπορούσαν να διασφαλείσουν τις πωλήσεις τους).
Τεσπα, όντως το δέσιμο με το ID ήταν πρόβλημα για κάποιους, οπότε μας ζητήσαν λύση universal licencing, δηλαδή κάτι "μαγικό" μέσω του οποίου το software τους θα παίζει σε όλες τις κάρτες, χωρίς registration key ή άλλο hardware mechanism, με ένα one-off (ή annual) payment.
Πρώτα βγάλαμε "licenced" κάρτες, που είχαν δηλαδή το key πάνω στην EEPROM και ο έλεγχος γινόταν από τον driver, οπότε για τον μέσο developer τα πράγματα γίνανε λίγο πιο σκούρα.
Αυτό δούλεψε μια χαρά για τους περισσότερους και οι πωλήσεις πηγαίνανε καλά αλλά δεν τους ικανοποίησε όλους, γιατί κάποιοι φτιάχνανε "SDK on top of our SDK", οπότε δεν μπορούσανε να αναγκάζουν τους πελάτες τους να παίρνουν τις δικές μας κάρτες.
Εκεί τα πράγματα σκουρήνανε, γιατί software-only 100% protection δεν υπάρχει, όσο και να χτυπιέσαι.
Και φυσικά εμείς θέλαμε μόνο η DLL του ενός να παίζει full, ενώ όλα τα άλλα προγράμματα να μην παίζουν αν δεν υπάρχει licence.
Τελικά αυτό που κάναμε είναι ένα συνοθύλευμα public-private encryption, stack walking, control flow obfuscation using SEH, κλπ, και όποιος έχει χρόνο ας κάτσει να περάσει την ώρα του :-)
Ότι σπάει, σπάει, αλλά πρέπει να ιδρώσεις και λίγο.
Εμείς πάντως είμαστε της νοοτροπίας ότι το να εμφανιστεί crack είναι δείγμα ότι αρχίζουμε να γινόμαστε "διάσημοι", συνεπώς ανυπομονούμε να συμβεί :-D
The fact that the program works is irrelevant.