[Delphi] Jeden progs - Jeden komp

0

Witam.
Chcę zrobic program, który będzie mozna uruchomic tylko na jednym komputerze (ale wiele razy, a nie tylko raz).

Mam już że trzeba podać kod dostępu do programu, no ale zawsze ktos sie znajdzie kto poda dalej. I na nic zabezpieczenie.
więc do tego chciałbym dodać sobie by można ten program uruchomic tylko na jednym komputerze. Oczywiście mozna by zmieniać jakąś wartość w kodzie dzięki czemu powstawałyby inne kopie, które mozna odpalic na innym komputerze.

Wie ktos jak to zrobić? Z góry dzieki za pomoc,
ps: sorrki ze tak troche namotalem;-)

0

kwestia jest bardzo ciężka... dajmy na to, ze instaluje sobie twojego proga, który zmienia coś w swoim kodzie, potem komp misie wykrzacza no to reinstalke robie, chce zainstalować ponownie twojego proga a on mi na to że ma zmieniony kod i bardzo mu przykro! Co wtedy? Vicious Circle !

0

Może sprawdzanie po s/n dysku twardego - jeżeli się nie zgadza to program się zamyka

0

a jak dysk sie zmieni?

0

No niestety, każde rozwiązanie w tym wypadku ma wady :)

0

to niech do uruchomieina tego programu jest potrzebny CD - wtyedy sprawdzasz numer serujny płydki i odpalasz albo nie :)

0

to niech do uruchomieina tego programu jest potrzebny CD - wtyedy sprawdzasz numer serujny płydki i odpalasz albo nie :)

A kopia zapasowa? Ta której utworzenia nie możemy (jako twórcy progsów) zabronić userowi...

0

Zabronić nie możemy (M$ ma chyba inną wykładnię [diabel] ), ale nie musimy ułatwiać [diabel]

0

najrozsadniej jest pobrac dane z systemu (dysk,precos etc etc), potem program moze to zapisac w postaci zaszyfrowanej w jakims pliku. Gdy sie zmieni jakis podzespol program robi nowy plik z lista urzadzen, wtedy uzytkownik musi wyslac Tobie te pliki, ty programem (dekodujacym) sprawdzasz ile sie zmienilo w tej konfiguracji, jezeli np dysk, lub sam procesor to jest ok (zalozmy), jezeli 3/4 kompa to juz szansa ze ktos to uzywa inny...niestety to w 100% nie wyeleminuje "piractwa".
Dobrym dodatkiem jest pobranie informacji o windowsie (user, system, ustawienia lokalne,zmienne srodowiskowe)

0

to najwyżej nie zrobi sobie tej kopi ;)

możesz zrobić generowanie numerka przy pierwszym uruchomieniu programu (na podstawie sprzętu) - wtedy klient kontaktuje się z Tobą Ty mu dajesz nr odblokowujący i działa... jak zmieni kompa,albo zacznie kombinować to i tak musi się z Tobą skontaktować.... :)

0

Ech, kłócicie się o to, że ktoś nie będzie mógł sobie zrobić kopii, ale problem jest większy - istnieje kupa programów do kopiowania płytki bardzo dokładnie i takie zabezpieczenie nie pomoże.

0

Zdaje się, że nikt nie zrozumiał problemu - tak mi się wydaje. Program ma być do uruchomienia tylko na jednym komputerze! - i nie można go włączać na innych - przecież od razu można zrobić kopię i na dwóch komputerach będzie śmigać ( z waszymi zabezpieczeniami).

Jedynym wyjściem jest połączenie z Internetem, gdzie każdy egzemplarz pliku EXE ma swój własny kod .. - po skopiowaniu pliku ten kod się nie zmienia - i aktywacja przez Internet. Tu nie ma innej możliwości. Jeżeli dany kod został już aktywowany - więcej nie da rady włączyć.

0

to niech do uruchomieina tego programu jest potrzebny CD - wtyedy sprawdzasz numer serujny płydki i odpalasz albo nie :)

A kopia zapasowa? Ta której utworzenia nie możemy (jako twórcy progsów) zabronić userowi...

Na jakim ty świecie żyjesz... Większść gier coś takiego ma i dzięki krakom tylko można mieć te jak to ładnie nazwałeś kopie( niekoniecznie zapasowe ;))

Ja bym sugerował wmieszać w to w net... mógłbyś zrobić serwer, musi się z nim połączyć by zarejestrować, a serwer nie pozwoli dwa razy użyć jednego kodu :)

0

Wiem ze zaraz poleca smiechy na to co napisze ale co mi tam :P

Zrob moze tak:
Wygrzeb z rejestru np. konto e-mail [adres] alebo haslo zakodowane ofkoz [diabel] i zrob w programie ze bedzie porownywal jak sie nie zgadza to Application.ProcessMessages; :) malo kto bedzie mial twoje konto e-mail na kompie :> albo porownanie UserName konta do Win$

0

Ja proponuję rozwiązanie na chama, każdy żeby włączyć program będzie musiał mieć chwilowe połączenie z internetem i poczekać na autoryzacje.
I wyobrażam sobie to tak:

program jeżeli nie ma na komputerze zapisanego swojego klucza (np w rejestrze) to łączy się z serwerem i podaje mu swój numer seryjny dysku, np MAC karty sieciowej i wszystko co się da, skrypcik na serwerze zapisuje dane do bazy danych i idzie zapytanie do admina (ciebie) czy się zgadzasz na takiego usera, ty albo zatwierdzasz albo nie, jeśli zatwierdzisz to user dostaje wygenerowany przez serwer klucz który jest generowany unikalnym algorytmem umieszczonym w jakimś skrypcie na podstawie podanych numerów seryjnych dysku etc., program ten klucz sobie zapisuje gdzieś i już nie chce połączenia z netem ale przy każdym uruchomieniu programu sobie sprawdza lokalnie wygenerowany klucz w/g tych seriali z tym co się pobrało z netu - jeśli się zgadza to uruchamia program, jeżeli nie to trzeba znowu mieć połączenie z netem i czekać na autoryzacje

// dop.

jak sie nie zgadza to Application.ProcessMessages; :)

a czy to nie zbyt brutalne rozwiązanie ? :D

0

No mam kodzik który odczytuje SN dysku, zapisuje go do exeka, potem go koduje, a przy próbie modyfikacji exeka - jest już bezużyteczny :)
Wszystko to działa na 1 kompie.

0

No mam kodzik który odczytuje SN dysku, zapisuje go do exeka, potem go (...)

Mozna prosic o SOURCE [diabel] nawet na prv ;)

0

Ewentualnie możesz pomyśleć o kluczu sprzętowym [diabel]

0

a ja mam takie pytanie: co z adresem MAC karty sieciowej. Przecież jest on unikalny dla każdej karty...

0

a ja mam takie pytanie: co z adresem MAC karty sieciowej. Przecież jest on unikalny dla każdej karty...

No jest, ale po pierwsze akurat MAC'a jest prosto oszukać (jest mnóstwo progsów, które "symulują" inny MAC karty sieciowej), a po drugie ktoś może sobie wymienić kartę i lipa.

0

a ja mam takie pytanie: co z adresem MAC karty sieciowej. Przecież jest on unikalny dla każdej karty...

No jest, ale po pierwsze akurat MAC'a jest prosto oszukać (jest mnóstwo progsów, które "symulują" inny MAC karty sieciowej), a po drugie ktoś może sobie wymienić kartę i lipa.

Poza tym nie każdy ma kartę sieciową :)

Chyba jedynym w miare skutecznym rozwiązaniem jest jednak polaczenie z Internetem, niestety niektorzy nie maja mozliwoci polaczenia...

0

Ja kiedyś rozwiązałem ten problem... robiłem takie zabezpieczenie... ale wiązało się to tylko z numerem seryjnym dysku twardego...

0

Ja kiedyś rozwiązałem ten problem... robiłem takie zabezpieczenie... ale wiązało się to tylko z numerem seryjnym dysku twardego...

ehh.. przecież te zabezpieczenia typu dysk, karta sieciowa, adres MAC są bezużyteczne - czytajcie treść postu.

0

Sam sie kiedys nad tym zastanawialem i doszedlem do wniosku ze co bym nie wymyslil to i tak mozna takie zabezpieczenie zlamac. Pozostaje nam tylko wymyslic sposob ktory zajmie jak najwiecej czasu i wysilku ludziom ktorzy beda chcieli go crackowac. Ja pokombinowal bym z jakims kluczem sprzetowym wydaje mi sie to najlepszym rozwiazaniem. Powiedzmy ze wraz z programem dajemy klientowi jakis pendrive. jednak zanim klient go dostanie w naszym programie umieszczamy numer seryjny tego pendriva. Klient dostaje program i pendrive poczym przy starcie program sprawdza czy jest on wpiety i czy numer seryjny sie zgadza jesli tak to uruchamiamy jesli nie to application.terminate. Im czesciej program bedzie sprawdzal poprawnosc seriala tym ciezej bedzie go zcrackowac. Program moze puscic w neta ale pendrieva chyba nie odda komus za darmo bo sam programu nie uruchomi. Wedlug mnie to jest calkiem niezle zabezpieczenie.

0

[rotfl] Dwie sprawy:
-stary temat...
-a o emulacji to słyszałeś?

1 użytkowników online, w tym zalogowanych: 0, gości: 1