![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Piszac aplikacje desktopowa dla klienta (.NET) zaczol mnie nurtowac pewien problem, jak do tej pory robilem jakies komercyjne programy to wymyslalem sobie jakis sposob na sprawdzanie poprawnosci seriala, co trudno nazwac algorytmem, bo głównie bylo to takie proste cos w stylu ze 3 litera klucza byla
czwarta litera md5 dziesiatej i podobne duperele, ale mysle ze to nie jest najlepsze rozwiazanie, szukalem po sieci o algorytmach numerow seryjnych to mi daje cos o generowaniu numerow produktow (jak barkody, czy numery IMEI komórek). Innym pomyslem ktory robilem, to opieranie serialu (tez takie czord wie co ![]() I kupowanie gotowych zabezpieczen jest bez sensu bo sa popularne, a jak cos sie staje popularne to przestaje byc bezpieczne bo rosnie wtedy liczba osob pubujacych to zlamac dla "sportu", tak wiec prosilbym bardzo o jakies linki do stron z takimi algorytmami, albo dac jakas idee. Pozdrawiam i dziekuje. --edit: Kto mi tu tak koloruje na czerwono ? ![]() Ten post edytował nasty_psycho 3.09.2006, 22:06:49 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 475 Pomógł: 0 Dołączył: 1.04.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Był o tym temat.. ale ja polecam ionCube - więcej info na google.
Mogę "Cię kodować" jak chcesz ;-) To na prawdę świetne rozwiązanie i bezpieczne ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
hmm, na poczatku pisalem wyraznie ze to jest aplikacja .net.
![]() I nie szukam aplikacji, czy przykladowego kodu, tylko ideei. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 475 Pomógł: 0 Dołączył: 1.04.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ahh, faktycznie - sorry
![]() Idee były właśnie w tym temacie co wyżej napisałem - bo był już spory temat na ten temat ![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 14.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Program napisany w .net warto zabezpieczyc obfuscatorem, wtedy narzedzia typu .net reflector nie produkuja już tak ładnego kodu zrodlowego.
Jezeli chodzi o seriale, to warto w tym miejscu zainteresowac sie RSA albo jakims systemem sygnatur (DSA albo ElGamal) z rozsadna dlugoscia klucza. Jezeli chcesz jeszcze bardziej zmiejszyc prawdopodobienstwo zlamania i zmiejszyc dlugosc seriali to ECC jest dobrym wyborem (lub system sygnatur oparty na krzywych eliptycznych). Jezeli aplikacja do dzialania wymaga internetu to mozna pobawic sie z sprawdzaniem seriala na serwerze z baza seriali osob, ktore kupily program. Oczywiscie na sposoby sa inne sposoby i tak system sygnatur mozna zlamac gdy sa za krotkie klucze lub zostaly zle wygenerowane. Gdy klucze sa odpowiedniej dlugosci zawsze mozna wygenerowac swoje i podmienic w programie, w takim wypadku warto zainteresowac sie jakimis sumami kontrolnymi z kodu programu. Tak samo mozna postapic z aktywacja przez internet i poprostu zapatchowac ja ![]() Najlepszym wyjsciem jest polaczenie kilku technik. Jezeli w programie jest sprawdzanie tego typu: if(wprowadzony_serial == generuj_serial(name)) to takie zabezpieczenie jest nic nie warte nawet gdy oparte jest na konfiguracji sprzetu. .Net reflector produkuje kod swietnej jakosci (o ile program nie byl pojechany obfuscatorem) i zrobienie keygena to kwestia przekopiowania funkcji generuj_serial do projektu w Visual Studio Mam nadzieje, ze chociaz minimalnie rozjasnilem kwestie zabezpieczenia Twojego programu ![]() Ten post edytował mr.r 3.09.2006, 21:31:21 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Cytat Program napisany w .net warto zabezpieczyc obfuscatorem, wtedy narzedzia typu .net reflector nie produkuja już tak ładnego kodu zrodlowego. No, ja poszedlem jeszcze dalej, bo znalazlem soft co kopiluje dll-ki .NET-u do natywnych, i jak otwiram je w jakims reflectorze, to pokazuje tylko skielety funkcji, bez ich "wnetrznosci" ![]() A obfuscator w tej sytuacji jest warty tyle co obfuskatory do php, tylko opuzni prace krakerowi, a skopilowana biblioteka sie dekompiluje tylko jako asm. Cytat Jezeli chodzi o seriale, to warto w tym miejscu zainteresowac sie RSA albo jakims systemem sygnatur (DSA albo ElGamal) Z rozsadna dlugoscia klucza. Jezeli aplikacja do dzialania wymaga internetu to mozna pobawic sie z sprawdzaniem seriala na serwerze z baza seriali osob, ktore kupily program. System sygnatur? czytasz mi w myslach bo wpadlem na taki pomysl zeby olac numery seryjne, bo za duzo zachodu bedzie o to, i zastosowac plik licencyjny o takiej struktuze:
gdzie nie bede musial nawet szyfrowac tego pliku bo bedzie on chroniony przed modyfikacja haszem z File->Signature... Co myslisz o tym rozwiazaniu? ps. Zna ktos jakies pozadne forum .NET? bo na deveopers.pl jest kiepsko ![]() ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 14.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
gdzie nie bede musial nawet szyfrowac tego pliku bo bedzie on chroniony przed modyfikacja haszem z File->Signature... Co myslisz o tym rozwiazaniu? Moze byc, keyfile bedzie nawet wygodniejszy dla koncowego uzytkownika. Tylko nie zadna ochrona przed modyfikacja hashem. W wezle <Entry name="Signature"> musi byc sygnatura DSA, ElGamal, ECDSA albo cos podobnego zrobiona z grupy Product i License. Piszac sygnatura nie mam na mysli hasha SHA1 czy MD5 tylko sytem sygnatur oparty na kluczu publicznym i prywatnym. Tak, ze Ty generujesz klucz prywatny i publiczny. Prywatny idzie do Twojego programu do generowania licencji a publiczny do chronionego programu (w uproszczeniu). Teraz potencjalny reverser nie majac klucza prywatnego nie moze wygenerowac sygnatury. Bez klucza prywatnego reverser moze go zdobyc tylko poprzez faktoryzacje N (w RSA) lub rozwiazujac DLP (w DSA lub ElGamalu) co jest strasznie czasochlonne jezeli klucze sa odpowiednich rozmiarow. Dobrym rozwiazaniem zeby reverser mial duzo roboty jest uzywanie hidden checkow czyli sprawdzanie "jakis tam" czesci sygantury, seriala czy czegokolwiek w roznych miejscach programu, czy np. podczas zapisywania albo otwierania plikow, mozna dodac tez odrobine losowosci i nie zawsze sprawdzac tylko co np. pare dni. Jezeli chodzi o Strong name signature to tez nie za bardzo chroni plik exe czy dll przed modyfikacja bo bardzo latwo mozna podmienic klucze. Mam nadzieje, ze nie zamotalem zabardzo ale zabezpieczenia programow to dosc zlozony temat ![]() I jedna sprawa: czym zabezpieczenie jest bardziej "swoje", mam na mysli, ze nie kupione to tym wiecej cracker musi spedzic czasu nad nim. I nie jest powiedziane, ze jak zobaczy cos zamotanego to da sobie spokoj ![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
dzieki za wypowiedzi, i czy zna ktos jakies dobre forum o .NET ? zeby bylo na podobnym poziomie co forum.php.pl
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 03:47 |