Zabezpieczanie programow przed Crackerami

0

szukam dobrych pomysłów na nazabezpieczenie kodu programu przed crackerami ktorzy to jak wiadomo dązą do znalezienia magicznego numerka, pÓÓÓÓki co mam pomysł szyfrowania oddzielnego wewnętrznych funkcji sprawdzania poprawnosci klucza, i zrobieniu to na morficznym kluczu kodowania, tj kilka funkcji obrabiających numer, ale kazda inaczej kodowana i rozkodowywana tylko na chwile tylko kiedy jest potrzebna i zaraz czyszczona lub zapisywane śmieci, a niech sie namęczą, i stosowanie duzo pętli niczego nie wnosznacych, tylko jak zrobic takowe kodowanie, aby program działał poprawnie i tylko wszczegolnych sytuacjach odkodowywac potrzebne kawałki??

czekam na jakieś sugestie

0

http://www.win32asm.civ.pl - tu zajmują się zabezpieczeniami programów.

0

Tylko ze to są spotykane zabezpieczenia, i je moge z malym wysiłkiem złamać, a co nie mówie juz o profesjonalistach, pakowaie pliku i szyfrowanie w całosci jest mało efektywne bo mozna to wszysto wyciągnąc z pamięci i po ptokach, modyfikacje na stałe program i mamy wykrywanie z głowy mozemy zając sie serialem, sam tak robiłem wiec wiem, chodzi mi o pakowanie ok to na pewno, ale dodatkowo szyfrowanie tylko pewnych elementow aby były deszyfrowane tylko kiedy są potrzebne, a tam glownie są gotowe wstawi ble, to nawet jak zauważył moj kolega mozna z automatu załatwic, tylko musze pomyślec jak robic cos takiego aby sprawnie to chodziło, napisać w asm oddzielne fukcje ktore zaszyfruje a potem dodam do exe?

0

<font color="darkblue">Po co się męczyć z crackerami >> niech żyje Open Source

Ale jak już chcesz to możesz np: władować poszczególne funkcje do dll'ek i je pokodować...

Jest też malutki problemik z serial'em >> przecież taki pirat może z końś wykraść (nawet kupić od ciebie) jeden egzemplaż i go rozpowszechnić!!
Ja znam na to niezły sposób robisz prościutki układ scalony podłanczany np do portu com (oczywiście tak by miał drugie wyjście - przejściowy) i twój programik pobiera seriala z tego układu [glowa] </span>

0

Ja znam na to niezły sposób robisz prościutki układ scalony podłanczany np do portu com (oczywiście tak by miał drugie wyjście - przejściowy) i twój programik pobiera seriala z tego układu [glowa]

Klucz sprzętowy ;-)
Ma jednak 2 wady:
Pierwsza i najważniejsza - za drogo to wychodzi.
Druga: jak ktoś chce to złamie. W AutoCAD część kodu umieszczana była w kluczu sprzętowym, ale nie przeszkodziło to crackerom odczytanie go i wrzucenie do exeka.

0

<font color="darkblue">Myślałem o jescze jednym sposobie na zabezpieczenie seriala.
Możnaby umieścić seriale na jakimś serwerku i odczytywać je po jakimś nr identyfikacyjnym sprzętu (np po numerze seryjnym HDD).

Program odczytywałby np nr seryjny HDD, i wysyłał na serwer a ten odsyłał by mu serial (żeby było trudniej to jak server nie znalazłby nr w swojej DB to i tak wysyłał by jakis losowy serial).

Od razu jednak nasuwa się jego poważna wada:
Będzie działał jedynie online :-/ , ale może być stosowany do programów sieciowych ;-) </span>

0

rozwiazanie zewnętrzne nie nalezą do najleprzych utrata kontroli nad plikiem, dwa cracker na wstępie ma ułatwione zadanie...
poza tym uwazam ze napsianie samemu kodu do szyfrowania poufnych funkcji uniemozliwi stosowanie automatow, co znacznie utrudni zycie takiemu

Co do seriala z kompa? hmm mozna by pomyślec, o czyms takim problemem staje sie ponowne kłopotanie klienta, co wrózy odchęcanie a dodatkowo mam problemy, bo klient bedzie sie burzył ze zakupił legalne oprogramowanie ale niestety serial niedziała

0

Ja bym proponował dość nietypowe rozwiązanie:
niech program odczyta np. nr seryjny dysku i w sytuacji kiedy cracker się trochę namęczy, i złamie jedno zabezpieczenie to program zacznie u niego chodzić bez ograniczeń, ale kiedy swojego cracka użyje na innym komputerze to program się wysypie z jakimś paskudnym wyjątkiem.

0

Dywizjon 303 :P

co do twojego pomysłu to jest mały problem bo bym musial generować takowy klucz próbny ktory byl by podawany na server, a to wymaga info i cracker wie czego sie spodziewac wiec to nie takie siup, to musi byc cos mało oczywistego i malo spotykanego wyszukany robak :P

0

sam sie bawie w łamanie zabezpeiczeń, i korzytam z troche nowszysch narzedzi np SI uzywam troche nowszego, wiec wiem naczym polegają sztuczki. dlatego wysnułem sugestie czyby nie zrobic szfrowania oddzielnych funkcji będących w programie, i kazdą funkcje innym morficznym kluczem. przy takich zabiegach dodatkowo mozna robic zmiane alokacji co powoduje ze debugery głupieją, na wykrywanie tez są metody sam stosuje 4 :) w zależnosci od potrzeb. wiec takie zabezpieczenie tez jest do czasu...

0

Jeżeli zabezpieczenie napisał człowiek, to i człowiek może je złamać. Innymi słowy nie ma takich zabezpieczeń, które skutecznie zapobiegną nieautoryzowanemu uruchomieniu. Jedynie mogą je opóźnić.

Czas potrzebny na pozbycie się zabezpieczenia z programu zależny jest głównie od dwóch składników: siły tego zabezpieczenia oraz popularności programu.

Też się interesuję tym tematem i myślę, że najciekawsze rezultaty (te z dolnej półki – bo pomijam np. klucze sprzętowe) osiąga się, gdy umieścimy w serialu mocno zaszyfrowane informacje niezbędne do działania funkcji wyłączonych w wersji shareware.
Mam na swoim skromnym koncie troszkę rozwalonych aplikacji i w większości przypadków wyglądało to tak:
[code]
haslo = PobierzHaslo();
pass = GenerujHaslo(PobierzNazwe());
if (pass == haslo)
{WlaczOpcjeDemo();
}
[/code]

I nie robię sobie żartów!
Ale jeśli w serialu zakodujemy jakąś wartość, która jest używana (ale NIE porównywana!) w wielu miejscach funkcji niedostępnej w demo oraz dodamy jakieś bzdetne zabezpieczenie w stylu wyliczenia sumy kontrolnej seriala (znów porównujemy wartości wyliczone na podstawie seriala, a nie sam s/n), to taki cracker szybko to znajdzie i będzie cały w skowronkach, że zmienił skok warunkowy na bezwarunkowy.
Jakież będzie jego zdziwienie gdy po odpaleniu program się wysypie, ponieważ do poprawnego działania będzie wymagał tych prawidłowych, zakodowanych danych, których w żaden sposób nie będzie w stanie wyciągnąć (jeśli nigdzie ich nie porównywaliśmy).

0

wiem ze tak większosc programow jest zabezpieczona, i w ten sposób mozna bez problemu zdobyc serial, nie trzeba sie bawic w zmienianie skoków fizycznie w pliku, hmm myśle ze masz dobry pomysł, mozna by tez zaszyc np w serialu kod skoku, tylko jak to zrobic aby nie był jawny?

0

Tak wiec jestes crackerem. No dobra. znasz pewnie pułapkę hmemcpy. No własnie. Ja sie jeszcze nie do konca umiem nią posługiwac. Ale jak wiadomo przed tym nie ma ucieczki. Wczesniej wsponiałem o S/N. Mozna by zrobic skok tak by progs zmieniał, za kazda próbą odczytania pamieci, flagę. W ten sposób mozna by wyłączac progs tylko kiedy by sie chciało.(ale czy to w ogóle jest mozliwe);

0

Powiedzcie mi jedną rzecz. Jak się uprę i otworzę w edytorze szesnastkowym plik, to zawsze mogę dojść jak to działa, a co za tym idzie złamać/ominąć zabezpieczenie (w najgorszym wypdku będę liczył na bitach).
Wydaje mi się, że zabezpieczenie jakie podał Marooned, jest chyba najlepsze. Jeżeli wrzuci się jakieś proste zabezpieczenie to wesoły cracker złamie je i potem mina mu zrzednie, jak okaże się, że to za mało :)

0

Powiedzcie mi jedną rzecz. Jak się uprę i otworzę w edytorze szesnastkowym plik, to zawsze mogę dojść jak to działa, a co za tym idzie złamać/ominąć zabezpieczenie (w najgorszym wypdku będę liczył na bitach).

Przecież mówiłem, że nie istnieje zabezpieczenie nie do złamania!

Wydaje mi się, że zabezpieczenie jakie podał Marooned, jest chyba najlepsze. Jeżeli wrzuci się jakieś proste zabezpieczenie to wesoły cracker złamie je i potem mina mu zrzednie, jak okaże się, że to za mało :)

Dzięki! Pragnę tu przytoczyć pewien niechlubny przypadek związany z programem Restorator (taki edytor zasobów exe,dll itp.). Kiedyś próbowałem go zarejestrować i dobrze, że szybko z tego zrezygnowałem! Otóż gdzieś na sieci znalazłem opis sposobu znalezienia poprawnego s/n. Jednak po jego przeczytaniu włos mi się na głowie zjeżył! A dlaczego? Otóż ów program generował pewien fałszywy serial i umieszczał go w pamięci w takim miejscu, aby nawet średnio zaawansowany reverse-engineer mógł go odnaleźć. Zadowolony z łowów po wpisaniu tego numerka już się tak nie cieszył. Jeśli dobrze pamiętam, to Restorator niszczył wiele plików, czy próbował formatować dysk. Nie pamiętam dokładnie, ale było to działanie wielce niszczycielskie.
Napisałem tę krótką opowieść w celu przestrogi dla młodych crackerów i reverse-engineer'ów :-| .

Tak wiec jestes crackerem. No dobra. znasz pewnie pułapkę hmemcpy. No własnie. Ja sie jeszcze nie do konca umiem nią posługiwac. Ale jak wiadomo przed tym nie ma ucieczki.

hmemcpy zostaje odpalone przy każdym kopiowaniu danych z jednego miejsca w pamięci do drugiego. Jasne, że można sobie wpisać swojego seriala do edita, założyć pułapkę na hmemcpy i kliknąć na guzik "rejestruj", ale nieraz spotakłem się z programami, które taką właśnie mentalność crakcera wykorzystują! Właśnie po kliknięciu guzika podstawia się fałszywy serial do porównania, a to, czy ten wpisany jest prawidłowy, sprawdza się po każdym wprowadzonym znaku. To często myli i powoduje, że kilka godzin spędzonych przy śledzeniu kodu leci w błoto! To pierwszy krok do zniechęcenia "złodzieja".

P.S. Za ok. 10 dni kończy mi się pewien mały, ale bardzo użyteczny dla mnie programik. Koleś chce za niego 15$ - trochę za dużo za 200kB kodu, jak na nasze warunki. Więc chyba trzeba będzie znów odpalić SI user image

0

hmm mi chodzi o zabezpieczenie przed takimi sytuacjami a nie je rozwijac :P, a co do trickowego seriala to nie głupie :) nie wpadł bym na to podawac najlpierw fikcyjny i jak koles go poda to mu zrobic czyszczenie dysku, albo flasha zalatwic na płycie :) to taki na kilka dni zgłowy :P, hmm nono, to daje pole do popisu

0

hmm mi chodzi o zabezpieczenie przed takimi sytuacjami a nie je rozwijac :P

Jasne! Ja też bym był wkurzony, gdybym udostępnił program shareware, a ludzie zamiast mi płacić - crackowali lub rejestrowaliby go sobie za friko, ALE: gdybym nie zajmował się grzebaniem w kodzie w celu znalezienia dobrego seriala itp. to nie poznałbym tajników i najlepszych sposobów na zabezpieczenie swojego programu. Kiedyś z jednym programem walczyłem ponad miesiąc - i wygrałem. Bardzo wiele mnie on nauczył i dzięki poznałem sposób, który jest dla crackera bardzo uciążliwy. Teraz mogę wykorzystać tę wiedzę do ochrony własnych produktów.

(...) to mu zrobic czyszczenie dysku, albo flasha zalatwic na płycie :) to taki na kilka dni zgłowy :P, hmm nono, to daje pole do popisu

Po takiej reakcji nie wiem, czy nie żałować tego, że o tym powiedziałem. :-8 To, że ktoś kradnie Twoją pracę nie daje Ci prawa do niszczenia jego własności! A jeśli ta osoba pracuje na legalnym oprogramowaniu i tworzy ważne projekty i ściągnie sobie Twój mały program oraz zarejestruje go fałszywym serialem znalezionym na jakiejś stronie, i w tym momencie Twoja aplikacja usunie mu z dysku wiele tygodni pracy, to taka kara nie jest raczej wymierna. Pamiętaj o tym i pomyśl jak Ty byś się czuł na jego miejscu!

Marooned jestes crackerem witaj w branzy. Ja tez jestem

no comment (bez obrazy)

0

Marooned popieram cie bo dobry cracker nie chwali sie tym ani nie udostępnia seriali, hmm aby uniknąc takich sytuacji jak wymieniłeś mozna generować serial z czasem życia np 10 min a potem zeby juz program uważał ze jest błędny?
To by było dobre, przy generowaniu takiego seriala hmm np zawierającego duzo znakow np 50 cięzko bedzie wychycic gdzie byc czas

0

Marooned popieram cie bo dobry cracker nie chwali sie tym ani nie udostępnia seriali

To chyba nie jest prawdą. Dajmy na to, że wychodzi na rynek jakiś nowy programik, na który czekają rzesze użytkowników bez grosza przy duszy. Crackerzy prześcigają się w tym, kto pierwszy stworzy działającą kopię, która nie potrzebuje seriali, czy kluczy sprzętowych. Taki osobnik zyskuje szacunek w swoim światku (jeśli oczywiście program+jego zabezpieczenie są tego warte). Więc pozostanie anonimowym tej "branży" - jak to już ktoś tu ujął - wydaje się być bezcelowe.

mozna generować serial z czasem życia np 10 min a potem zeby juz program uważał ze jest błędny?
To by było dobre, przy generowaniu takiego seriala hmm np zawierającego duzo znakow np 50 cięzko bedzie wychycic gdzie byc czas

To by nie było dobre. Dlaczego? Ano każdy posiadacz systemu Windows musi czasem go przeinstalować (taki już nasz los). I co? Zapłacił za program i nie może go ponownie zainstalować? To bez sensu. Co prawda są takie programy, które przy wysyłaniu zamówienia dołączają np. numer seryjny dysku, ale z nimi jest ten sam problem - po formatowaniu lub zmianie dysku trzeba go ponownie rejestrować.
A co do 'czasowego' seriala, to wystarczy sobie cofnąć godzinę i nasze pieczołowicie zaprojektowane zabezpieczenia i czas zakodowany 512 bitowym kluczem trzymany w serialu nie zdadzą egzaminu.

<font color="blue">Odpowiedź do postu poniżej</span>: a to w takim razie można coś takiego wprowadzić - tylko czy to się opłaca - nie wydaje mi się :|

0

Ale chodziło mi o tego seriala co robi za podpucha jak cracker go wpisze w ciagu hmm 10 min od uzyskania go to bye, bye :),a po przekroczeniu czasu serial bedzie niepoprawny zupełnie

0

mozna to obejsc w sposób następujący generować ciag(kawałek seriala juz na starcie applikacji, a crackra jak nachodzi szukanie seriala to tobi to natychmiast a nie czeka, a sam czas mozna wydłuzyc nawet 2h, dodawać do seriala jak np jakąś stałą a na pewno nie bedzie analizował krok po kroku applikacji od samego załadowania aby dosc skad sie bierze ten numerek :)

0

Ciekawi mnie jedno, skoro ten serial będzie się tak ciągle zmieniał, to skąd będziesz wiedział jaki jest teraz, a jaki za tydzień? Możesz zrobić program, który będziesz udostępniał z gotowymi obliczeniami seriala, ale jak znam życie, program ten szybko trafi do internetu, i każdy se będzie mógł zrobić poprawnego seriala...

PS. To mój 100-ny post!!! [browar] [browar] [browar]

0

Im mozna tylko utrudnic łamanie haseł, czy rozszyfrowywanie danych. Możesz zrobić parę (im więcej tym lepiej) algorytmów na kodowanie. Potem jeżeli by to szło nap czatem wybierać któryś z nich losowo, wpisywać tą wiadomość (którym algorytmem jest zaszyfrowane) gdzieś w texstcie i ta wiadomosc tez zakodowywać . Im wiecje kombinacyi i zawłości tym lepiej. Gdybyś zrobił ileś tam tych poziomów zakodowywania, to taki kraker miałby troche roboty, troche dużo. :) Jeżeli powiedziałem coś źle to się czepiajcie

0

Stary ni ma szans na zabezpieczenie swojego programu , poco go zabezpieczać jak i tak w krótkim czasie zostanie złamany , sam ze swojego doświadczenia wiem (sam łamie programy) , że złamanie np . przeciętne zabezpieczenie triala wystarczy poczytać trochę tekstów na cracking.pl i łamiesz program jak nic . Najprostszy sposób to usunięcie naga który jest brzydki jak byle co wystarczy do tego SoftIce (jest zajebisty) śledzenie krok po kroku i zamienienie parę linijek kodu i okienka nie ma , można też usunąć okienko na stałe np .Resource Hackerem jest przystosowany do tego , także lepiej torszeczkę pobawić się sztuczkami anty-debug niż tam jakieś pętle stosować czy tam inne rzeczy . Polecam zrobienie parę anty-debugów przed softice , w32dasm , to najczęstsze debburgery stosowane przez nas są najlepsze , a też polecam spakowanie programu jakimś pakerem i trochę shować kodzik jakimś kryptorem , chociaż rozpakować programik też można i to drugie też da się wykonać .

0

czlowiek stworzyl zabezpieczenie - czlowiek je zlamie

ja mam pomysl na takie zabezpieczenie ktorego zlamanie bedzie trudne i czasochlonne, potrzebny bedzie do niego net

wymyslasz np 8 metod kodowania, przy instalacji programu glowny exe zostanie zaszyfrowany 1 z tych metod, metoda ta bedzie wybierana losowo a jej numer po zakodowaniu zostanie zapisany gdzies w systemie, mozna jeszcze zamotac i zapisac kilka kodow w roznych miejscach, a tylko 1 bedzie dobra. rejstracja progsa bedzie miala miejsce przez net, jesli wszystko sie bedzie zgadzac to server pobierze z twojego kompa nr metody jaka prog zostal zaszyfrowany, rozkoduje ja i poda programowi rejestracyjnemu, ten natomiast rozkoduje exe by nadawal sie do urzycia.

osoba lamiaca to zabezpieczenie bedzie musiala sie napocic najpierw zeby znalezc numer sposobu kodowania, rozszyfrowania go i podania programowi. byc moze ktos bedzie na brutala uzywal kazdej metody rozszyfrowywania exe i patrzyl ktora jest prawidlowa wiec im ich wiecej tym lepiej.

0

Ja tez mam własny pomył na zabezpieczenie programów. Mianowicie zrobić taki bajer, że wpisany serial będzie zakodowanym spakowanym kawałkiem programu. Jeżeli serial będzie zły to w następnych killku linijkach kodu program się posypie jeśli nie to zaraz po tym trefnym kawałku serial zostanie zapisany na stałe do exeka albo rejestru albo jakiegoś innego pliku. Jeżeli cracker nie będzie posiadał już rozkodowanego kawałku programu to nie ma szans żeby znalazł prawidłowy serial choćby dlatego że nie będzie z niczym porównywany :) Jeśli nawet ktoś się uprze że nie może być coś takiego że po wpisaniu błędnego seriala program się wiesza to można sprawdzać czy powiedzmy pierwsze killka bajtów jest prawidłowe.

Moim skromnym zdaniem :) to program spełnia swoje zadanie i nie jest trudny w implementacji.

0

z php jest dobre dla goscia ktory nic sie nie orjętuje co sie dzieje z programem i siecią, taki troche bardziej zaawansowany dojdzie ze program <font color="red">kozysta</span> z sieci i tutaj juz po sprawie bo szybko dojdzie jak obejsc problem

0

<font color="darkblue">To z php jest bardzo dobre tylko, że:
1 dla programów sieciowych;
2 jak zwykle trzeba pokombinować z kodowaniem części niezbędnych informacji itp...

Ja <font size="18"><font color="red">jusz</span></span> wcześniej pisałem o czymś takim tyle <font color="red">śe</span> zamiast ip sprawdzałem nr seryjny dysku... :-)
ale można przecież sprawdzać jedno i drugie...</span>

0

Jak dla mnie, to ta metoda z formatowaniem dysku jest całkiem słuszna tyle że taki program winien o takich zachowaniach wcześniej ostrzegać (np. na dole okienka, w którym pyta się o kod rejestracyjny, podać tekścik Producent nie odpowiada za uszkodzenia, wynikające z używania nielegalnego oprogramowania :) ). Sprawdzanie IP to tak jak sprawdzanie numeru seryjnego dysku, tyle że jeszcze gorzej... Załóżmy, że ktoś ma dynamiczny adres IP i problem... Ma rejestrować po każdym uruchomieniu kompa i połączeniu z NETem?? To raczej nie najlepszy pomysł...

0

program który wykorzystuje Internet do swojego poprawnego działania( dający wszystkie funkcje) a sam jako taki nie wykorzystuje możliwości internetu jest troche nie namiejscu, trzeba założyć ze jeszcze nie wszyscy mają dostęp do internetu juz nie wspomne o stałym bo co jeśli chcemy uruchomic program rano a korzystamy z DialUp do telekomuny a nie mamy wykupionego jakiego kolwiek abonamentu..
uzytkownik zrezygnuje z takiego programu i poszuka sobie innego.

tracimy rzesze zainteresowanych, to musi byc zabezpieczenie lokalne. widze ze wypowiada sie tu wiele osób ktore sie bawią w Debugowanie w czasie rzeczywitym, ale nigdy chyba nie zastanawiali sie jak działa debuger, wystarczy ze bedziemy ciagle relokowac pamieć, a debuger padnie i zawiesi system bo nie bedzie umiał przywrócic poprzednich danych po ustawieniu płaplki, przywróci ale faktyczne, tak dziłają niektore zabezpieczenia, problem w tym ze strasznie zpowalniają prace

wiec nalezy stosowac w wybranych miejscach i niestety pozostaje pisanie tylko i wylacznie w assemblerze

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