Jak wygenerować i zweryfikować klucz licencyjny oprogramowania?

Jestem obecnie zaangażowany w rozwój produktu (rozwijanego w C#), który będzie dostępny do pobrania i zainstalowania za darmo, ale w bardzo ograniczonej wersji. Aby uzyskać dostęp do wszystkich funkcji, użytkownik musi uiścić opłatę licencyjną i otrzymać klucz. Klucz ten zostanie następnie wprowadzony do aplikacji ,aby "odblokować" pełną wersję.

Jako, że używanie takiego klucza licencyjnego jest jak zwykle, zastanawiam się:

    Jak to zwykle rozwiÄ…zuje?
  1. Jak mogę wygenerować klucz i w jaki sposób może zostać zatwierdzony przez aplikację?
  2. Jak mogę również uniknąć opublikowania klucza w Internecie i użycia go przez innych, którzy nie zapłacili licencji (klucz, który w zasadzie nie jest "ich").

Myślę, że powinienem też jakoś powiązać klucz z wersją aplikacji, aby można było pobierać opłaty za nowe klucze w wersjach funkcjonalnych.

Coś jeszcze powinienem pomyśleć w tym scenariuszu?

Author: Robert Harvey, 2009-03-01

15 answers

Zastrzeżenie: nie możesz uniemożliwiać użytkownikom piractwa, ale tylko ułatwiać uczciwym użytkownikom robienie właściwych rzeczy.

Zakładając, że nie chcesz robić specjalnego budowania dla każdego użytkownika, to:

  • Wygeneruj sobie tajny klucz do produktu
  • Przyjmij nazwÄ™ użytkownika
  • PoÅ‚Ä…cz nazwÄ™ użytkownika i tajny klucz i hash z (na przykÅ‚ad) SHA1
  • Rozpakuj hash SHA1 jako ciÄ…g alfanumeryczny. Jest to "produkt użytkownika indywidualnego Klucz "
  • w programie wykonaj ten sam hash i porównaj z kluczem produktu. JeÅ›li równe, to OK.

Ale powtarzam: to nie zapobiegnie piractwu


Niedawno czytałem, że takie podejście nie jest kryptograficznie bardzo dźwięczne. Ale to rozwiązanie jest już słabe (, ponieważ samo oprogramowanie musi gdzieś zawierać tajny klucz ), więc nie sądzę, aby to odkrycie unieważniło rozwiązanie tak daleko, jak to idzie.

Po prostu pomyślałem, że naprawdę powinienem wspomnij o tym; jeśli planujesz czerpać z tego coś innego, uważaj.

 112
Author: Brent.Longborough,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-10 15:08:27

Istnieje wiele sposobów generowania kluczy licencyjnych, ale niewiele z nich jest naprawdę bezpiecznych. A szkoda, bo dla firm klucze licencyjne mają prawie taką samą wartość jak prawdziwa gotówka.

Najlepiej, aby klucze licencyjne miały następujące właściwości:

  1. Tylko Twoja firma powinna być w stanie wygenerować klucze licencyjne dla Twoich produktów, nawet jeśli ktoś całkowicie odwraca inżynierom Twoje produkty (co się stanie, mówię z doświadczenia). Zaciemnianie algorytm lub ukrywanie klucza szyfrowania w oprogramowaniu jest naprawdę wykluczone, jeśli poważnie myślisz o kontrolowaniu licencjonowania. Jeśli produkt się powiedzie, ktoś zrobi generator kluczy w ciągu kilku dni od wydania.

  2. Klucz licencyjny powinien być używany tylko na jednym komputerze (lub przynajmniej powinieneś być w stanie kontrolować to bardzo ściśle)

  3. Klucz licencyjny powinien być krótki i łatwy do wpisania lub dyktowania przez telefon. Nie chcesz, żeby każdy klient wywołanie pomocy technicznej, ponieważ nie rozumieją, czy klucz zawiera "l" lub "1". Twój dział wsparcia będzie Ci za to wdzięczny, a będziesz miał niższe koszty w tym obszarze.

Więc jak rozwiązać te wyzwania ?

  1. Odpowiedź jest prosta, ale technicznie trudna: podpisy cyfrowe wykorzystujące kryptografię klucza publicznego. Twoje klucze licencyjne powinny być w rzeczywistości podpisane "Dokumentami", zawierającymi przydatne dane, podpisane kluczem prywatnym Twojej firmy. Podpisy powinny być częścią klucza licencyjnego. Produkt powinien zweryfikować klucze licencyjne za pomocą odpowiedniego klucza publicznego. W ten sposób, nawet jeśli ktoś ma pełny dostęp do logiki Twojego produktu, nie może wygenerować kluczy licencyjnych, ponieważ nie ma klucza prywatnego. Klucz licencyjny wyglądałby następująco: BASE32(CONCAT( DATA, PRIVATE_KEY_ENCRYPTED(HASH(DATA)))) Największym wyzwaniem jest to, że Klasyczne algorytmy klucza publicznego mają duże rozmiary podpisów. RSA512 ma 1024-bitową sygnaturę. Nie chcesz, aby Twoje klucze licencyjne miały setki znaków. Jednym z najpotężniejszych podejść jest wykorzystanie kryptografii krzywej eliptycznej (z ostrożnymi implementacjami, aby uniknąć istniejących patentów). Klucze ECC są 6 razy krótsze niż klucze RSA, dla tej samej wytrzymałości. Możesz dodatkowo zmniejszyć rozmiary podpisów za pomocą algorytmów takich jak algorytm podpisu cyfrowego Schnorr (patent wygasł w 2008 roku - dobrze :) )

  2. Jest to osiągalne poprzez aktywację produktu (Windows jest dobrym przykład). Zasadniczo, dla klienta z ważnym kluczem licencyjnym, musisz wygenerować "dane aktywacyjne", które są podpisaną wiadomością osadzającą identyfikator sprzętowy komputera jako Podpisane dane. Zazwyczaj odbywa się to przez internet, ale tylko raz: produkt wysyła klucz licencyjny i identyfikator sprzętu komputerowego do serwera aktywacyjnego, a serwer aktywacyjny odsyła podpisaną wiadomość (która może być również krótka i łatwa do dyktowania przez telefon). Od tego momentu produkt nie sprawdź klucz licencyjny podczas uruchamiania, ale dane aktywacji, które wymagają tego, aby komputer był taki sam, aby potwierdzić (w przeciwnym razie dane byłyby inne, a podpis cyfrowy nie potwierdzałby). Należy pamiętać, że sprawdzenie danych aktywacji nie wymaga weryfikacji przez Internet: wystarczy zweryfikować podpis cyfrowy danych aktywacji kluczem publicznym już osadzonym w produkcie.

  3. Po prostu wyeliminuj zbędne znaki jak "1", " l", "0"," o " z Twoich kluczy. Podziel łańcuch klucza licencyjnego na grupy znaków.

 72
Author: Catalin S.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-25 14:21:00

Prosta odpowiedź-bez względu na to, jakiego schematu używasz, można go złamać.

Nie karz uczciwych klientów systemem mającym na celu zapobieganie hakerom, ponieważ hakerzy będą go złamać niezależnie od tego.

Prosty kod zaszyfrowany związany z ich e-mailem lub podobnym jest prawdopodobnie wystarczająco dobry. Identyfikatory sprzętowe zawsze stają się problemem, gdy trzeba ponownie zainstalować lub zaktualizować sprzęt.

Dobry wÄ…tek w temacie: http://discuss.joelonsoftware.com/default.asp?biz.5.82298.34

 62
Author: schooner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-18 15:49:54

Podczas generowania klucza nie zapomnij połączyć wersji i numeru kompilacji z łańcuchem znaków, na którym obliczasz hash. W ten sposób nie będzie ani jednego klucza, który odblokuje wszystko, co kiedykolwiek wydałeś.

Po znalezieniu kluczy lub łatek unoszących się w astalavista.box.sk będziesz wiedział, że udało Ci się zrobić coś na tyle popularnego, że ktoś zadał sobie trud złamania. Radujcie się!

 50
Author: shoosh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-01 14:06:30

Poza tym, co już zostało powiedziane....

Każde użycie aplikacji. Net jest z natury łamliwe ze względu na pośrednie problemy językowe. Prosty demontaż kodu. NET otworzy Twój produkt dla każdego. Mogą łatwo ominąć Twój kod licencyjny w tym momencie.

Nie można już używać wartości sprzętowych do tworzenia klucza. Maszyny wirtualne umożliwiają teraz tworzenie obrazu "licencjonowanej" Maszyny i uruchamianie jej na dowolnej wybranej przez siebie platformie.

Jeśli to drogie oprogramowanie są inne rozwiązania. Jeśli tak nie jest, po prostu zrób to wystarczająco trudne dla przypadkowego hakera. I zaakceptować fakt, że w końcu pojawią się nielicencjonowane kopie.

Jeśli twój produkt jest skomplikowany, nieodłącznymi problemami wsparcia będą tworzenie ochrony dla Ciebie.

 20
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-01 17:56:06

Silnik C#/. Net, którego używamy do generowania kluczy licencyjnych, jest obecnie utrzymywany jako open source:

Https://github.com/appsoftware/.NET-Licence-Key-Generator .

Opiera się na systemie "częściowej weryfikacji klucza", co oznacza, że tylko podzbiór klucza, którego używasz do generowania klucza, musi zostać skompilowany do twojego programu dystrybucyjnego. Klucze tworzysz samodzielnie, więc implementacja licencji jest unikalna dla Twojego oprogramowania.

Jak wspomniano powyżej, jeśli twój kod może być dekompilowany, stosunkowo łatwo jest obejść większość systemów licencyjnych.

 9
Author: gb2d,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-20 11:35:38

I don ' t know how mister you want to get

Ale wierzę, że. Net może uzyskać dostęp do numeru seryjnego dysku twardego.

Możesz mieć program wysłać to i coś eles (jak nazwa użytkownika i adres mac nic)

Obliczasz kod na podstawie tego i wysyłasz im klucz.

Powstrzymają ich od przełączania maszyn po zdobyciu klucza.

 6
Author: Crash893,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-01 17:11:39

Używałem Crypkey w przeszłości. Jest jednym z wielu dostępnych.

Możesz chronić oprogramowanie tylko do pewnego punktu za pomocą dowolnego schematu licencjonowania.

 5
Author: Mitch Wheat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-01 13:43:57

Jedynym sposobem, aby zrobić wszystko, o co prosiłeś, jest wymaganie dostępu do Internetu i weryfikacji na serwerze. Aplikacja musi zalogować się na serwer za pomocą klucza, a następnie musisz zapisać szczegóły sesji, takie jak adres IP. Uniemożliwi to użycie klucza na kilku różnych maszynach. Zwykle nie jest to zbyt popularne wśród użytkowników aplikacji, a jeśli nie jest to bardzo droga i skomplikowana aplikacja, nie jest tego warta.

Możesz po prostu mieć klucz licencyjny dla aplikacji, a następnie sprawdzić po stronie klienta, czy klucz jest dobry, ale łatwo jest rozpowszechniać ten klucz do innych użytkowników, a z dekompilatora nowe klucze mogą być generowane.

 4
Author: Marius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-01 13:46:59

Zaimplementowałem internetową jednorazową aktywację oprogramowania mojej firmy (C#. Net), która wymaga klucza licencyjnego, który odnosi się do licencji przechowywanej w bazie danych serwera. Oprogramowanie trafia na serwer z kluczem i otrzymuje informacje o licencji, która jest następnie szyfrowana lokalnie przy użyciu klucza RSA wygenerowanego z niektórych zmiennych (kombinacja CPUID i innych rzeczy, które nie zmieniają się często) na komputerze klienta, a następnie przechowuje go w rejestrze.

Wymaga pewnych kodowanie po stronie serwera, ale działało naprawdę dobrze dla nas i byłem w stanie korzystać z tego samego systemu, gdy rozszerzyliśmy się na oprogramowanie oparte na przeglądarce. Daje również sprzedawcom świetne informacje o tym, kto, gdzie i kiedy oprogramowanie jest używane. Każdy system licencjonowania, który jest obsługiwany tylko lokalnie, jest w pełni podatny na eksploatację, szczególnie w przypadku odbicia w. Net . ale, jak wszyscy inni mówili, żaden system nie jest całkowicie bezpieczny.

Moim zdaniem, jeśli nie korzystasz z internetowych licencjonowanie, nie ma sensu w ogóle chronić oprogramowania. Z bólem głowy, który może powodować DRM, nie jest fair wobec użytkowników, którzy faktycznie zapłacili za to, aby cierpieć.

 3
Author: jugg1es,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-12 01:43:16

Mocno wierzę, że tylko system licencjonowania oparty na kryptografii klucza publicznego jest tutaj właściwym podejściem, ponieważ nie musisz umieszczać w swoim kodzie źródłowym istotnych informacji potrzebnych do generowania licencji.

W przeszłości używałem Biblioteka licencji Treeka wiele razy, ponieważ spełnia te wymagania i oferuje naprawdę dobrą cenę. Używa tej samej ochrony licencji dla użytkowników końcowych i siebie, a nikt tego nie złamał do tej pory. Można również znaleźć dobre wskazówki na stronie internetowej, aby uniknąć piractwa i pękania.

 2
Author: panpernicek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-08 07:01:24

Nie można całkowicie zapobiec piractwu oprogramowania. Możesz zapobiec przypadkowemu piractwu i to właśnie robią wszystkie rozwiązania licencyjne.

Node (machine) zablokowane licencjonowanie jest najlepsze, jeśli chcesz zapobiec ponownemu użyciu kluczy licencyjnych. Używam Cryptlex od około roku dla mojego oprogramowania. Ma również darmowy plan , więc jeśli nie oczekujesz zbyt wielu klientów, możesz go używać za darmo.

 2
Author: adnan kamili,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-31 19:04:50

Podobnie jak kilka innych wymienionych, jestem ogromnymprzeciwnikiem bycia domyślnie wrogim klientom-coś, z czego przemysł licencyjny jest znany. Więc rozwiążę dobre rozwiązanie twojego problemu, które oferuje również dobry UX klienta .

Na początek wspomniałeś, że masz "ograniczoną" wersję oprogramowania, której używasz do konwersji klientów na "uaktualnij", aby uzyskać dodatkowe funkcje. Więc to, czego szukasz, to licencje funkcji dla klient może zakupić licencję na feature-Xlub feature-Y.

Zbudowałem Keygen z myślą o tego typu licencjach. Keygen to licencjonowanie REST API, które pozwala zarządzać kontami użytkowników, licencjami, a także śledzić użycie/skojarzenia maszyny.

To, co bym zrobił, to skonfigurować 2 typy licencji (A policy wewnątrz Keygen), gdzie jeden jest podstawową polisą dla ograniczonej darmowej wersji, a drugi jest polisą dla płatnych wersja.

Nie jestem pewien, czego używasz do płatności, ale załóżmy, że używasz czegoś takiego jak Stripe (obecnie dość standard), który oferuje webhooki . Keygen ma również webhooki (niezależnie od tego, czy go używasz, czy nie, wszystko to nadal ma zastosowanie). Możesz zintegrować Keygen, aby rozmawiać z dostawcą płatności za pomocą webhooks z obu stron (pomyśl: customer.created- > Utwórz licencję bazową dla Klienta, license.created->obciążaj klienta za nową licencję).

Więc wykorzystując webhooki, możemy zautomatyzować tworzenie licencji dla nowych klientów. A co z walidacją licencji w samej aplikacji? Można to zrobić na wiele sposobów, ale najpopularniejszym sposobem jest wymaganie od klienta wprowadzenia długiego klucza licencyjnego do pola wejściowego, które można następnie zweryfikować; myślę, że jest to okropny sposób obsługi walidacji licencji w Twojej aplikacji.

Dlaczego tak myślę? Po pierwsze, wymagasz od klienta wprowadzenia żmudnie długiego klucza licencyjnego, który jest przeznaczony do zużycie maszyny, a drugi wymaga od Ciebie i Twojego klienta śledzenia wspomnianego żmudnie długiego klucza licencyjnego . Dobra, jaka jest alternatywa? Myślę, że najlepszą alternatywą jest zrobienie czegoś, do czego wszyscy twoi klienci są przyzwyczajeni: pozwalając im utworzyć konto dla Twojego produktu za pomocą adresu e-mail/hasła. Następnie możesz powiązać wszystkie ich licencje i ich maszyny z tym kontem. Więc teraz zamiast wprowadzać klucz licencyjny, mogą po prostu zalogować w korzystaniu z ich poświadczeń.

Co to daje? po pierwsze, eliminuje potrzebę, aby Ty i twoi klienci, aby śledzić klucze licencyjne, Ponieważ wszystko jest obsługiwane za kulisami wewnątrz ich konta użytkownika i co najważniejsze: możesz teraz zaoferować swoim klientom samodzielną licencję i aktywację maszyny! tj. ponieważ wszystkie ich licencje i maszyny są powiązane z ich kontem użytkownika, możesz poprosić ich o zakup licencji, gdy odpalają Twoją aplikację na nierozpoznanej maszynie.

Teraz przejdź do walidacji licencji : za każdym razem, gdy twój Klient loguje się do Twojej aplikacji za pomocą swojego adresu e-mail/hasła, możesz zapytać jego konto użytkownika o posiadane licencje, aby określić, czy może używać feature-X lub feature-Y. A ponieważ Twoja aplikacja jest teraz self-serve , możesz pozwolić swoim klientom na zakup dodatkowych funkcji bezpośrednio z Twojej aplikacji!

Więc mamy wprowadziliśmy ton automatyzacji do naszego systemu licencjonowania, możemy licencjonować poszczególne funkcje (tj. ograniczoną wersję vs. pełną wersję), zaoferowaliśmy awesome UX dla naszych klientów, a także złagodziliśmy jeden z największych powodów próśb o wsparcie: Odzyskiwanie klucza licencyjnego.

W każdym razie, to trwało długo, ale mam nadzieję, że to komuś pomoże!

 2
Author: ezekg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-13 20:50:31

Jestem jednym z twórców platformy licencjonowania oprogramowania Cryptolens i pracuję nad systemami licencjonowania od 14 roku życia. W tej odpowiedzi zamieściłem kilka wskazówek opartych na doświadczeniu zdobytym przez lata.

Najlepszym sposobem rozwiązania tego problemu jest skonfigurowanie serwera klucza licencyjnego, który będzie wywoływany przez każdą instancję aplikacji w celu weryfikacji klucza licencyjnego.

Zalety serwera klucza licencyjnego

Zalety z kluczem licencyjnym serwer to:

  1. zawsze możesz zaktualizować lub zablokować klucz licencyjny ze skutkiem natychmiastowym.
  2. każdy klucz licencyjny może być zablokowany na określonej liczbie komputerów (zapobiega to publikowaniu klucza licencyjnego online przez innych użytkowników).

Rozważania

Chociaż Weryfikacja licencji online daje większą kontrolę nad każdą instancją aplikacji, połączenie z Internetem nie zawsze jest obecne( zwłaszcza jeśli dotyczy większych przedsiębiorstw), więc potrzebujemy innego sposobu weryfikacji klucza licencyjnego.

Rozwiązaniem jest zawsze podpisanie odpowiedzi klucza licencyjnego z serwera za pomocą kryptosystemu klucza publicznego, takiego jak RSA lub ECC (prawdopodobnie lepiej, jeśli planujesz uruchomić na systemach wbudowanych). Twoja aplikacja powinna mieć tylko klucz publiczny , aby zweryfikować odpowiedź klucza licencyjnego.

Więc jeśli nie ma połączenia z Internetem, możesz użyć poprzedniej odpowiedzi klucza licencyjnego. Pamiętaj, aby przechowywać zarówno date i identyfikator maszyny w odpowiedzi i sprawdź, czy nie jest za stary (np. pozwalasz użytkownikom być offline co najwyżej 30 dni, itp.) i że odpowiedź klucza licencyjnego należy do właściwego urządzenia.

Uwaga należy zawsze sprawdzić certyfikat odpowiedzi klucza licencyjnego, nawet jeśli jesteś podłączony do Internetu), aby upewnić się, że nie został zmieniony od momentu opuszczenia serwera (to nadal musi być zrobione, nawet jeśli API do serwera serwer klucza licencyjnego używa https)

Ochrona tajnych algorytmów

Większość aplikacji. NET można dość łatwo odtworzyć (istnieje zarówno diassembler dostarczany przez Microsoft, aby uzyskać kod IL, jak i niektóre komercyjne produkty mogą nawet pobrać kod źródłowy w np. C#). Oczywiście zawsze możesz zaciemnić kod, ale nigdy nie jest on w 100% bezpieczny.

I w większości przypadków, celem każdego rozwiązania licencjonowania oprogramowania jest pomoc uczciwym ludziom, którzy są uczciwi (tzn. że uczciwi użytkownicy, którzy są gotowi zapłacić, nie zapomnij zapłacić po wygaśnięciu okresu próbnego itp.).

Jednak nadal możesz mieć jakiś kod, który w żaden sposób nie chcesz wyciekać do publicznej wiadomości (np. algorytm przewidywania cen akcji itp.). W takim przypadku jedynym sposobem jest utworzenie punktu końcowego API , który aplikacja będzie wywoływać za każdym razem, gdy metoda ma być wykonywana. Wymaga połączenia z Internetem, ale zapewnia, że Twój tajny kod nigdy nie zostanie wykonany przez maszynę kliencką.

Realizacja

Jeśli nie chcesz zaimplementować wszystkiego samemu, polecam rzucić okiem na ten tutorial (Część Cryptolens)

 1
Author: Artem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-25 16:50:47

Możesz użyć darmowego rozwiązania stron trzecich, aby obsłużyć to za Ciebie, takie jak Quantum-Key.Net jest bezpłatny i obsługuje płatności za pośrednictwem paypal poprzez stronę sprzedaży internetowej, którą tworzy dla Ciebie, wydawanie kluczy za pośrednictwem poczty e-mail i blokuje użycie klucza do określonego komputera, aby zapobiec piractwu.

Należy również zadbać o zaciemnienie / szyfrowanie kodu lub można go łatwo odwrócić za pomocą oprogramowania takiego jak De4dot i .NetReflector. Dobry darmowy kod obfuscator jest ConfuserEx który jest szybki i prosty w użyciu i bardziej skuteczne niż drogie alternatywy.

Należy uruchomić gotowe oprogramowanie przez De4Dot i .NetReflector, aby go odtworzyć i zobaczyć, co by zobaczył cracker, gdyby zrobił to samo i upewnić się, że nie zostawiłeś żadnego ważnego kodu odsłoniętego lub ukrytego.

Twoje oprogramowanie nadal będzie crack, ale dla zwykłego crackera może to wystarczyć, aby je odłożyć, a te proste kroki zapobiegną również wyodrębnieniu kodu i ponownie wykorzystane.

Https://quantum-key.net

Jak stosować lek ConfuserEx?

Https://github.com/0xd4d/de4dot

Https://www.red-gate.com/dynamic/products/dotnet-development/reflector/download

 0
Author: Damo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-10 20:20:11