Tworzę program który będzie potrzebował klucza aktywacyjnego do odblokowania pełnej wersji.
Jak mogę sobie ułatwić pisząc tabelę z kluczami?
sposobow na rozwiazanie tego problemu jest wiele - min MD5.
Zakladamy ze autor uzywa tylko jednego klucza aktywujacego do wersji pro.
Wartosc tego klucza (np CrateCLSId) przechowuje w globalnej zmiennej typu string w postacji zakodowanej MD5.
Jesli user wykupi licencje dostaje kod = createCLSId.
Pozostaje z tego zrobic MD5 i porownac.
Tak np jest zabezpieczony jeden z programow ERP (nazwy niestety nie podam).
Zaszywanie klucza w programie nie jest IMO dobrym pomysłem, tym bardziej robienie tylko jednego klucza dla każdej wersji.
Najbezpieczniejsze wydaje się licencjonowanie przez sieć i przy każdym uruchomieniu potwierdzanie licencji. Masz w tedy info o dublujących się kluczach. Teoretycznie
Ale nie oszukujmy się, każdy sposób jest do złamania. Chyba nawet na tym forum padł tekst:
Jeśli napisałeś program i po pewnym czasie na necie znalazłeś crack do niego. Powinieneś się cieszyć, bo ktoś uznał twoją aplikację za wartościową na tyle, by poświęcić czas na łamanie jej zabezpieczeń.
Jeżeli ktoś poda ci jakiś przykładowy kod tworzący taki klucz to za pomocą tej samej procedury napisze sobie własny keygen do twojego programu, MD5 to jedna z najlepszych metod ale i to da się zniszczyć jak umiesz używać programu ResourceHacker albo znasz się na edycji HEX
wiadomo ze kazde zabezpieczenie da sie oszukac - mi tylko chodzilo o podanie sposobu na szybkie tworzenie seriala :)
CLSId jest do tego bardzo dobre, lub druga opcja dac nowemu userowi linuxa vi i kazc mu wyjsc - serial nie do pobicia.
Nawet moduly TPM da sie oszukiwac :)
Mozna tez zrobic cos takiego (licencja na konretna maszyne):
a) w menu programu masz opcje create request key: (tworzy klucz bedacy kombinacja nr dysku, proca etc. etc)
b) wysyla numer na adres email
c) z utworzonego klucza tworzysz zaszyfrowana postac dowolny algorytm (moze byc MD5)
d) uzytkownik dostaje klucz a program ma wewnatrz zaszysty mechanizm ktory tez sobi generuje klucz z nr dysku, proca etc. etc i porownuje go z otrzymana wartoscia od usera
:)
I co to da poza mocnym wkurwieniem użytkownika? Użytkownik wymieni\podłączy drugi dysk twardy, zmieni procesor i co? I ponownie musi użerać się z autorem programu żeby otrzymał nową licencję.
Podam fajny, życiowy przykład - CloneCD był (nie wiem jak teraz) zabezpieczony z użyciem (o ile mnie pamięć nie myli) krzywych eliptycznych, całkiem niezłe krypto... zrobienie cracka zajmowało zaś 10 minut doświadczonemu zawodnikowi, początkujący z godzinę musiał się nad tym pomęczyć. Dodatkowe kilka minut na względy wizualne schodziło, np. dopisanie czegoś od siebie do About. Jaki z tego morał? Nich go napisze kolejny 'pomysłowy' zawodnik w tym wątku.
Ja robię tak.
Tworzę sobie klucz podczas instalacji, w którym zamieszczam rózne informacje o aplikacji. Zapisuję to zakodowane do rejestru.
W ciągu kilka flag mówi o tym, czy aplikacja jest pełna, czy nie.
Jeśli aplikacja nie jest pełna i czas użytkowania skończył się wyskakuje odpowiednie okno z kodem. Kod jest wysyłany do firmy, a tam KeyGen na jego podstawie tworzy kod, który zostaje odsyłany klientowi.
Wygląda to całkiem prosto. Nawet jest całkiem proste, bo pełna dokumentacja zajmuje chyba niecałe 2 strony A4. Jednak nie tak łatwo go złamać.
Czyli może wymyśl coś w ten deseń.