Jak zabezpieczyc swoj program? (dobrze mysle?)

0

SIema (raz sie ma raz sie nie ma)
Dobra do rzeczy bo mi cos w kompie (beczy)
Dobra juz serio klimat(yzacja)

Tak sobie pomyslalem bo cos tam przeczyatlem na 4p niedawno o jakims numerze seryjnym dysku czy SIDIROMU
I teraz mam pytanie takie: Jak zrobie program i powiedzmy osoba 'JACEK' chce kupic ode mnie program. To ja mu wysle aplikacje do odczytywania numeru seryjnego dysku on mi przesle ten numer i w mojej aplikacji czy programie instalacyjnym po uruchomieniu dam kod na sprawdzenie czy dysk tego goscia jego numer sie zgadza z tym co mi podal i wtedy na innym kompie nie bedzie mogl zainstalowac?

Pytania dodatkowe:
Czy nr seryjny sie zmienia po formatowaniu?

p.s. Blondynka mowi do drugiej:

  • mialam test ciazowy
  • I co trudne pytania ?

Ide sie bełknąć <-- nie wiecie co to znaczy :)

0

Numer seryjny sie nie zmiania - a ten Twój sposób jakis wyszukany - może wymyśl coś lepszego :-)

0

Czesc Detox Wlasnie nie wiem co wymyslec co tu najlepiej zastosowac poradz cos

0

DITOX a czy ta funkcja pobiera wlasnie ten numer seryjny o ktorym pisales ze sie nie zmienia ?

function GetHardDiskSerial(const DriveLetter: Char): string;
var
  NotUsed:     DWORD;
  VolumeFlags: DWORD;
  VolumeInfo:  array[0..MAX_PATH] of Char;
  VolumeSerialNumber: DWORD;
begin
  GetVolumeInformation(PChar(DriveLetter + ':'),
    nil, SizeOf(VolumeInfo), @VolumeSerialNumber, NotUsed,
    VolumeFlags, nil, 0);
  Result := Format('Label = %s   VolSer = %8.8X',
    [VolumeInfo, VolumeSerialNumber])
0

WIDMO - oszczędź sobie roboty - jeśli pytasz o takie zabezpieczenia, to oznacza, że czas potrzebny na jego usunięcie będzie równy 20 minut (z 19 minutową przerwą na kawę). Szkoda zachodu... lepiej poświęć ten czas na dopracowanie programu.

0

Marooned a mógłbyś nieco rozwinąć tę kwestię? Mnie się ten pomysł wydaje dobry i nie wiem jak w ciągu minuty chcesz usunąć takie zabezpieczenie. Prosiłbym o rozwiniecie jeśli możesz. (Chodzi mi o sam pomysł a nie o to czy to akurat taka funkcja jaka podał Widmo)

0

Pewnie masz na mysli Debugowanie i sprawdzanie warunkow w assemblerze ??? i oczywiscie mozna ominac adres JP sprawdzajacy i wpisac adres docelowy zaraz po funkcji :) Moj program nie bedzie chyba warty zeby sie w to bawic. moze tobie zajelo by to minute.
Sam pomysl wydaje mi sie dobry, chyba nawet niezly. ale nie ma 100% zabezpieczen. poradzcie cos ?

0

Marmar - tu nie ma co rozwijać - taki temat był wałkowany już parę razy i zawsze musiał być blokowany ze względu na bicie piany.

Ale niech Ci będzie - podam taki szkielet - bez szczegółów.

w kodzie piszesz coś w stylu:
[code]zmienna = PobierzJakiśTamKodCzySerial();
if not (zmienna = JakiśUstalonyKod) then ZamknijProgramLubGoOgranicz();[/code]

to poświęcasz chwilkę na znalezienie tego fragmentu w asm i tam masz coś w ten deseń (uproszczone):

call PobierzJakiśTamKodCzySerial   ;funkcja zwraca wynik w eax
cmp eax,JakiśUstalonyKod
jne ZamknijProgramLubGoOgranicz  ;<-- @1
;dalsze instrukcje programu
jmp GdzieśDalej
ZamknijProgramLubGoOgranicz:
;tu program jest zamykany czy co tam chcemy

więc wystarczy, że wywalę instrukcję @1 i już całe 'wielkie' zabezpieczenie idzie w błoto.

Jak pisałem - to tylko uproszczenie, ale chciałeś, abym rozwinął myśl a nie zagłębiał się w tajniki crackingu.

Tym postem kończę ten temat.

Widmo - jak chcesz zabezpieczenia przed ziomalami, którzy za swój największy 'włam' uznają zmianę linijki w plikach .bat to jaknajbardziej zastosuj to, o czym piszesz.

Pozdro

0

Hmm.. no zgadzam sie z tym co napisałeś. Nie twierdze przecież, że tak proste zabezpieczenie ma doskonałą skuteczność . Chodziło mi o to że jesli zalozenie jest takie ze progeam ma dzialac na jakims komputerze a na innym nie no to trzeba by zaczac budowanie zabezpieczenia wlasnie od czegos takiego jak napisal Vidmo - co nie znaczy ze na tym poprzestac i zakonczyc tak prosto.

0

To mila dyskusja i wlasnie Marooned tak myslalem ze w ASM zmini sie linijke i tak to z kazdym programem jest. ale jak pisal Marmar to moze byc jeden z elementow zabezpieczen a skutecznie jest nie tyle zrobic jedno porzadne zabezpieczenie co zniechecic Crackera do lamania kolejnych. CHyba wykorzystam jednak ten pomysl Przekonaliscie mnie i w sumie jedna wada to to ze dla 100 osob musze sto razy kompilowac proga i wpisywac te numery.

Dzieki za wszytsko.

p.s. Marooned masz moze jakies dobre teksty o cracku. Ja sie tym specjalnie nie interesowalem i wiem ze duzo jest w sieci tego ale nie chce syfu tylko jakis jeden ,dwa konkretne arty. mozna by sie wieke nauczyc z tego pewnie sa jakies szyuczki ktore oszukuja Debugerry cos kiedys o tym slyszalem.

0

To mila dyskusja i wlasnie Marooned tak myslalem ze w ASM zmini sie linijke i tak to z kazdym programem jest. ale jak pisal Marmar to moze byc jeden z elementow zabezpieczen a skutecznie jest nie tyle zrobic jedno porzadne zabezpieczenie co zniechecic Crackera do lamania kolejnych. CHyba wykorzystam jednak ten pomysl Przekonaliscie mnie i w sumie jedna wada to to ze dla 100 osob musze sto razy kompilowac proga i wpisywac te numery.

Dzieki za wszytsko.

p.s. Marooned masz moze jakies dobre teksty o cracku. Ja sie tym specjalnie nie interesowalem i wiem ze duzo jest w sieci tego ale nie chce syfu tylko jakis jeden ,dwa konkretne arty. mozna by sie wieke nauczyc z tego pewnie sa jakies szyuczki ktore oszukuja Debugerry cos kiedys o tym slyszalem.

http://www.win32asm.civ.pl/wyswietl.php?co=anticrack&warunek=wszystkie

Jesli mowisz o zniechecaniu to zrob w programie 20 raz sprawdzanie tego seriala (np. podczas startu, przy otwieraniu pliku, zamykaniu, losobo co jakis czas, stalo co minute, gdy jest 15:30 :) ) i staraj sie za kazdym razem inaczej budowac funkcje sprawdzajaca ( na pewno nie uzywac tej samej! ) Wtedy jesli cracker nie bedzie chcial szukac tych wszystkich 20 sprawdzen bedzie musial odczytac serial i wpisac go twoim programikiem. ( zaszyfruj go nieco, co nie zaszkodzi ). Nie wiem czemu piszesz ze bedziesz musial kompilowac dla kazdej osoby. Chyba nie kompilowac tylko generowac oddzielny kod. Fajne jest tez zabespieczenie ala getright. ( jesli program dziala online ). Umieszczasz seriale osob na jakims serwerze www i program laczy sie aby sprawdzic czy ten ktory uzywa tez tam jest. Jesli nie to np autodestrukcja. Ale to tez latwe do wylaczenia, a czesto sprawdzac nie mozna, bo zabardzo obciazy lacze. Jednym slowem jak kazde zabespieczenie. Im wiecej tym lepiej :) ( nie zapomnij o sprawdzaniu sumy kontrolnej programu )

0

widmo - jeśli znasz już asm32 to rzuć okiem na helpa dołączonego do LoneWolf'a - to pierwsze, co czytałem - głównie teksty Mnicha, ale nie tylko. Polecam.

0

Dzieki za opisy i linki do stron. Skorzsystalem z inforamcji. Faktycznie jescze dodam sume kontrolna i zaszyfruje serial najlepiej zrobie XOROWANIE seriala i sprawdzanie pod roznymi funkcjami kilka razy w programie. co do kompilowani 100 razy :) to osoba ktora bedzie chciala wziac ode mnie program bedzie musila podac mi Serial swojego dysku. i ja wtedy umieszcze go w programie Skompiluje i wtedy temu komus dam. i tak z kazdym nowym userem. wiec za kazdym razem nowa kompilacja ale to nie problem az tak dlugo sie nie kompiluje :)

Dzieki Za propozycje POZDRAWIAM
WIDMO

0

W dobie szybkiego internetu mozna sie pokusic o serwery wykonujace jakies czynnosci zamiast lokalnie, zwracaly by jedynie wynik w postaci danych do wyswietlenia ... Moze kiedys. W sumie to glupio sie przyznac, ale troche czasu temu myslalem, ze na tym bedzie polegal .NET :P

0

Widmo - nie rekompiluj programu. Umieść zaszyfrowany serial w osobnym pliku.

0

czym najlepiej zaszyfrowac taki plik ? bo Xorowanie odpada.

0

Miałem kiedyś pomysł na takie zabezpieczenie: okienko dialogowe z pytaniem o serial (oczywiście we własnym instalatorze) kod generujacy seriale na podstawie pola NAME. Jeżeli masz program, który zajmuje cos kolo 1MB, to zdeasemblowanie go potrwa. Próbowałem łamać atki 800KB program z tym zabezpieczeniem: trudność zależy od zastosowanego algorytmu generowania seriala. Ja go rozwaliłem po 2 miesiacach roboty... A ilość generowanych znaków: 10. Mam gdzies ten algorytm, jak chcesz to go poszukam. Jak znajde to moze Ci go podesle.

0

Miałem kiedyś pomysł na takie zabezpieczenie: okienko dialogowe z pytaniem o serial (oczywiście we własnym instalatorze) kod generujacy seriale na podstawie pola NAME. Jeżeli masz program, który zajmuje cos kolo 1MB, to zdeasemblowanie go potrwa. Próbowałem łamać atki 800KB program z tym zabezpieczeniem: trudność zależy od zastosowanego algorytmu generowania seriala. Ja go rozwaliłem po 2 miesiacach roboty... A ilość generowanych znaków: 10. Mam gdzies ten algorytm, jak chcesz to go poszukam. Jak znajde to moze Ci go podesle.

Zdeasemblowanie progsa 1MB nie trwaaz tak duzo. Zaleznie od kompa z minute. A twoj post nic nie wnosi wartosciowego. Podalbys chociaz jaki algorytm tam miales. Watpie ze komukoliwek 2 miesiace chicialo sie rozszyfrowywac haslo. Nie prosciej zminic jumpa.

0

Super jakbys mogl ten lgorytm podeslac to bylbym wdzieczny. dyskusja sie rozwinela. Wiem ze nie ma programow idealnie zabezpieczonych i nigdy nie bedzie wiec sie skusze jak weczesniej pisalismy o zastosowanie kilku algorytmow: cche zrobic tak:

Powiedzmy ze ktos chce kupic ode mnie program.
Ja wysylam temu komus program,
ktory odczytuje serial jego dysku C:
ta osoba orzesyla mi ten serial ja go koduje
jak na schemacie ponizej:

poweidzmy ze serial ma psotac: 2E72-32SF
pobieram pierwsze 4 znaki i koduje algorytmem nr 1
pobieram ostatnie 4 znaki i koduje algorytmem nr 2
pobieram 8 znakow i koduje algorytmem nr 3

i teraz podczas otwieranai aplikacji pobieram serial dysku C:
i powiedzmy

if pobrany.serial=serialowi.kodowanem.algorytmem1 then kopia=true;

Potem osoba przeglada uzywa program a ja znowu pobieram serial i przykladowo przy otwieraniu pliku sprawdzam go alg nr 2 itd
zeby uzyc roznych algorytmow i w roznych miejscach w programie badac stan serial dysku C:
powiedzmy moze to byc 20 algorytmow w tym kilka XOR z roznymi przesunieciami.

Myslalem ze za kazdym razem bede musial kompilowac program po wprowadzeniu od kogos numeru SERIAL do programu. ale marooned podpowiedzial mi zeby uzyc pliku z SERIALEM zakodowanym i to nawet super pomysl. Moznaby bylo zrobic tak.

Daje komus program jest on jakby w wersji DEMO.
podczas otwierania aplikacji sprawdza czy jest odpoweidni plik. jesli jest odczytuje dane i uruchamia porgram w pelnej wersji jesli nie ma to w wersji demo. osobie ktora kupuje program jesli chce zakupic pelna wersje podsylamy program on wyciaga SERIAL koduje go XOROWANIEM i odsyla do nas ciag znakow. my go przerabiamy na swoje algorytmy i umieszcmay w pliku:

XIDW-WU32
Od9283kkw
oi0943j0j09resh
...
...
...
j923hj09*Y9hg3t

powiedzmy ze jest ze dwadziescia linijek. taki plik dajemy
naszemu klientowi i moze on uzywac program.

A jesli osoba przegra plik i program na inny komputer
to i tak nie uruchomi w pelnej wersji bo bedzie inny serial.
Mam nadzieje ze to wypali i ze dobrze mysle.
Dziekuje wszystkim za dobre rady.
jestescie WIELCY.

pozdrawiam

WIDMO

0

Jedyne co dowiedziałm się ciekawego z tego postu(topic) to ten kawał o bnlondynkach :-D :-D :-D.

Jak sie ma 89 lat :-D

0

89 do setki :)))))hehehhe
ja sobie tak mysle ze jak zdebuguje ktos takiu program i ustawi BREAKPOINTY na sprawdzanu, porownywaniu wartosci w ASEMBLERZE ofkorz
i pozmiwnia flagi na JNP to zlamie prgram w klika minut :(

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