konto usunięte

Temat: Zabezpieczenie aplikacji

W dalszym ciągu rozwijam system zabezpieczenia swojej aplikacji. Korzystam przy tym z licencji zapisanej w pliku XML podpisanym cyfrowo. Działa fajnie, ale oczywiście, jeśli ktoś podprowadzi aplikację razem z plikiem licencji - będzie mu działać.

Stąd pomysł, by wyciągać jakiś informacje unikalne dla sprzętu. Co i w jaki sposób można ze sprzętu klienta sensownego wyciągnąć?

Aha, zewn. kluczy sprzętowych chciałbym uniknąć.

konto usunięte

Temat: Zabezpieczenie aplikacji

polecam to rozwiązanie:
http://www.eziriz.com/intellilock.htm

nie zawsze warto samemu pisać coś co już jest i dobrze działa:)
be problemu możesz zabezpieczyć aplikację po id sprzętu, generator dopiszesz i działa elegancko.

Sam korzystam z tego rozwiązania, zabezpieczająć soft. Posiada oprócz tego prostą obfuskację, co dla mnie jest in plus.
Ogólnie możliwości ten program ma sporo.

konto usunięte

Temat: Zabezpieczenie aplikacji

Proponuje najpierw się zapoznać z tym:

http://rs207.rapidshare.com/files/50959439/LaBBa_-_How...

To jest pdf z tutorialem w jaki sposób łamie się częściowo obfuskowaną aplikację .NET

Podejście może nie zbyt wyrafinowane, ale dość pouczające, szczególnie na początek :)

Co do wyciągania informacji unikalnych dla danej maszyny to najprostszym sposobem jest powiązanie klucza z adresem MAC karty sieciowej, które to są unikalne w skali światowej.

Są jeszcze inne algorytmy, które np. budują hash na podstawie ilości i modeli dysków twardych, modelu i ilości procesorów itd., ale każde tego typu rozwiązanie ZAWSZE korzysta z adresu MAC.

P.S. Podany link był wolny od wirusów i trojanów w moim przypadku, mimo wszystko radzę go jednak sprawdzić jakimś antywirusem etc.Sergiusz B. edytował(a) ten post dnia 13.03.10 o godzinie 14:14

konto usunięte

Temat: Zabezpieczenie aplikacji

Łukasz Machowski:
polecam to rozwiązanie:
http://www.eziriz.com/intellilock.htm

nie zawsze warto samemu pisać coś co już jest i dobrze działa:)
be problemu możesz zabezpieczyć aplikację po id sprzętu, generator dopiszesz i działa elegancko.

Sam korzystam z tego rozwiązania, zabezpieczająć soft. Posiada oprócz tego prostą obfuskację, co dla mnie jest in plus.
Ogólnie możliwości ten program ma sporo.

zmieniam płytę główną, bo np. stara miała wypadek z zasilaczem który uległ awarii - zdarza się - co wtedy?

konto usunięte

Temat: Zabezpieczenie aplikacji

Przemysław R.:
Łukasz Machowski:
polecam to rozwiązanie:
http://www.eziriz.com/intellilock.htm
zmieniam płytę główną, bo np. stara miała wypadek z zasilaczem który uległ awarii - zdarza się - co wtedy?

To masz problem :)

Dlatego większość takich rozwiązań korzysta z weryfikacji kluczy na serwerze dostawców. Takie podejście daje możliwość np. odinstalować aplikację, zwolnić licencję i zainstalować na nowym sprzęcie.

Co do różnej maści obfuskatorów to należy pamiętać o dwóch rzeczach:

1) Przede wszystkim o tym, iż większość narzędzi oferuje ochronę polegającą na prekomplikacji naszej aplikacji do kodu maszynowego. Tracimy korzyści wynikające z JIT u klienta, który np. ma inny sprzęt, inny system niż nasz developerski i skorzystałby na charakterystycznej dla swojego profilu sprzętowego optymalizacji.

2) Narzędzia często wstrzykują specjalne porcje kodu IL, które mają zaburzać proces dekomplikacji, np. przez Reflector. W niektórych przypadkach może to negatywnie odbijać się na funkcjonowaniu zabezpieczonej aplikacji, a takie problemy jest b. ciężko wytropić: u klienta się zawiesza, a u nas działa, kod też jest OK i przetestowany...

3) Jeszcze jeden punkt: obfuskacja zaburza, a wręcz uniemożliwia działanie kodu wykorzystującego reflekcje czy serializację.

Generalnie obfuskację trzeba stosować z głową i dwa razy sprawdzać zabezpieczone aplikacje. Najlepiej jest zabezpieczać określone fragmenty aplikacji, np. jakieś absolutnie krytyczne metody, natomiast resztę zostawić tak jak jest.Sergiusz B. edytował(a) ten post dnia 13.03.10 o godzinie 14:37

konto usunięte

Temat: Zabezpieczenie aplikacji

Przemysław R.:
Łukasz Machowski:
polecam to rozwiązanie:
http://www.eziriz.com/intellilock.htm

nie zawsze warto samemu pisać coś co już jest i dobrze działa:)
be problemu możesz zabezpieczyć aplikację po id sprzętu, generator dopiszesz i działa elegancko.

Sam korzystam z tego rozwiązania, zabezpieczająć soft. Posiada oprócz tego prostą obfuskację, co dla mnie jest in plus.
Ogólnie możliwości ten program ma sporo.

zmieniam płytę główną, bo np. stara miała wypadek z zasilaczem który uległ awarii - zdarza się - co wtedy?


Masz parę opcji:)
pierwsza sprawa, klient potwierdza, że zmienił płytę, odpala generator id sprzętu. Wysyła do Ciebie generujesz odpowiednią licencję.

Inna sprawa można zrobić aktywację poprzez web service ( intellilock
to wspiera i sam genreuje szkielet).

Tak czy tak masz pewność, że to będzie działało tylko na tej licencji i na tej konkretnej maszynie.

Jest trochę opcji jak to można rozwiązać:)

podejrzewam że sam wszystkich nie przerobiłem:)

Co do obfuskacji, jest to i tak tylko takie szybkie zabezpieczenie. Większość użytkowników zrezygnuje jak zobaczy,że IL jest wywalony:)

Jak ktoś chce bardzo to złamie wszystko, każdą obfuskację.
Obfuskacja ma przede wszystkim zniechęcić większość potencjalnych użytkowników próbujących dostać się do kodu.
Oczywiście trzeba to robić z głową.

Ja osobiście psuję przeważnie tylko IL, aby nie było go tak łatwo i od razu widać chociażby .net reflectorze. Kto będzie chciał to się pobawi i się dostanie do środka. Ale większość i tak zrezygnuje i o to mi chodzi.

ogólnie samych opcji w tym programie jest sporo, także można zawsze ściągnąć trial i się pobawić:) Nie trzeba zabezpieczać ze względu na id sprzętu. Może to być również dla szczególnego assembly przygotowanego specjalnie dla klienta i tylko u niego działające. Można sporo się pobawić tutaj:)Łukasz Machowski edytował(a) ten post dnia 13.03.10 o godzinie 15:02
Kamil Sławiński

Kamil Sławiński Senior iOS Developer

Temat: Zabezpieczenie aplikacji

Co do wyciągania informacji unikalnych dla danej maszyny to najprostszym sposobem jest powiązanie klucza z adresem MAC karty sieciowej, które to są unikalne w skali światowej.

Są jeszcze inne algorytmy, które np. budują hash na podstawie ilości i modeli dysków twardych, modelu i ilości procesorów itd., ale każde tego typu rozwiązanie ZAWSZE korzysta z adresu MAC.

W jaki sposób pobrać fizyczny adres MAC karty sieciowej , mając pewność, że nie jest on spoof'owany?. Ja jedyny sposób jaki znam w tej chwili to:
1. Sprawdzenie czy w rejestrze jest wpis o wymuszonym MACu (jeżeli tak oznacza to, że jest spoof'owany).
2. Jeżeli tak backup i czyścimy , jeżeli nie to mamy prawdziwy MAC.
3. Jeżeli w pkt2 był wymuszony MAC po wyczyszczeniu pola w rejestrze trzeba wyłączyć i podnieść jeszcze raz interfejs sieciowy, żeby karta zgłosiła się z fizycznym adresem.
4. Po całej operacji wypadałoby po sobie posprzątać i ew. znowu przywrócić w rejestrze spoof'owany MAC.

Jak widać na szczególnie eleganckie takie rozwiązanie nie wygląda.

konto usunięte

Temat: Zabezpieczenie aplikacji

Przemysław R.:
Łukasz Machowski:
polecam to rozwiązanie:
http://www.eziriz.com/intellilock.htm

nie zawsze warto samemu pisać coś co już jest i dobrze działa:)
be problemu możesz zabezpieczyć aplikację po id sprzętu, generator dopiszesz i działa elegancko.

Sam korzystam z tego rozwiązania, zabezpieczająć soft. Posiada oprócz tego prostą obfuskację, co dla mnie jest in plus.
Ogólnie możliwości ten program ma sporo.

zmieniam płytę główną, bo np. stara miała wypadek z zasilaczem który uległ awarii - zdarza się - co wtedy?

Wtedy najpierw reinstalujesz windows'a bo zakladam ze nie dostaniesz plyty glownej z identycznym kontrolerem IDE/SATA/SCSI..... a potem reinstalujesz aplikacje i zglaszasz sie do producenta softu po nowa licencje. Przerabialem takie scenariusze z wieloma firmami jako klient.Rafał Ziółkowski edytował(a) ten post dnia 16.03.10 o godzinie 12:49

konto usunięte

Temat: Zabezpieczenie aplikacji

Kamil Sławiński:

W jaki sposób pobrać fizyczny adres MAC karty sieciowej , mając pewność, że nie jest on spoof'owany?.

Ktoś kto spoofuje swój MAC w 90% będzie także próbował crackować Twoją aplikację innymi metodami. Jest też wąska grupa ludzi, która spoofuje MACi bo tego wymaga ich legalna praca.

Zresztą spoofing polega na oszukiwaniu systemu, a nie całkowitej podmianie adresu więc jeśli jest to TAK krytyczne dla Ciebie to zawsze możesz poszukać metod dostępu do adresu MAC bezpośrednio przez driver NIC.

To jest decyzja biznesowa, a nie inżynierska, do jakiego stopnia posunąć się z ochroną swojej aplikacji. W ogromnej większości przypadków MAC jest wiarygodnym unikalnym identyfikatorem komputera i ten problem jest sztuczny. Zresztą jak i sama idea obfuskacji kodu - w ogromnej większości przypadków jest to absolutnie zmarnowany czas i pieniądze.

konto usunięte

Temat: Zabezpieczenie aplikacji

Zmieniając odrobinę temat..

Czy naprawdę potrzebujesz takich zabezpieczeń? ostatnio celem przekonania się i sprawdzenia na ile skuteczne metody licencjonowania w .NET-cie są dla sportu i w celach edukacyjnych starałem się obejść zabezpieczenia w: NHProf i RedGate SQL Data Generator... z powodzeniem.

Złamanie tego zajęło mi 15 minut: Reflector + Reflexi. Szukasz Main() programu i idziesz do momentu aż znajdziesz:

if(!LicencjaJestOK())


i w MSIL zmieniasz instrukcję skoku albo ją całkiem wywalasz i program działa.

Jak widać jakiekolwiek zabezpieczenie jest bez sensu, klucze, web service, moc enkrypcji.. jak najsłabszym ogniwem jak Twój kod.

Tak długo jak system wykonuję się po stronie klienta, kod wykonuję się na jego maszynie tak długo można to złamać. Łamane są gry napisane w C++ (trochę trudniej się to dekompiluje), systemu operacyjne, telefony komórkowe, dekodery satelitarne, wszytko.

W momencie kiedy ktoś w googlach wpisuję: "[twoj system] crack" albo "[twoj system] rapidshare" to już wiesz, że taka osoba w życiu nie zapłaci za Twój system. Już prędzej poszuka jakiegoś zamiennika, innego skrakowanego podobnego systemu albo jak ma skill to sama to złamie (mało prawdopodbne, ale prawdopodobne, że ktoś już to złamał i umieścił w sieci).

Dlatego musisz bardziej dbać o tą część która faktycznie ma zamiar za Twój system zapłacić.
W taki sposób jak komplikujesz życie użytkownikom, zmuszając ich do weryfikacji na podstawie sprzętu, łączenia z web servicem jest z góry traktowaniem Twoich klientów jak potencjalnych złodziei. Zły PR.

Celem mechanizmów licencyjnych jest to, żeby jak to się mów: "Keeping the honest clients honest".
Czyli jak ktoś ma do wyboru:
- Kupić Twój system
- Ukraść go
to druga opcja była dla niego trudniejsza i żeby wiedział, że łamie prawo, żeby ściągając go z jakiegoś źródła nie pomyślał, że to jest freeware, żeby wiedział że kiedyś będzie trzeba zapłacić za ten system.

O takich ludzi dbaj, o tych co są gotowi zapłacić. Walcz o nich tak, że jedyne co będziesz wymagał to jakiś prosty klucz licencyjny którego nie trzeba onlinowo weryfikować, nie będzie łączył się z niczym itd..

Przykład: kiedyś pamiętam, za czasów kiedy miałem więcej czasu na granie kupowałem gry które były zabezpieczone securom.
Kilka razy miałem taki przypadek że ten securom tak cwaniaczył, że musiałem po prostu ściągnąć do zakupionej gry cracka i dopiero odpalić - inaczej nie ruszyła.

Nigdy nie jest tak, że ktoś widzi jakiś system płatny, stara się złamać a jak się nie uda to go kupi. Takie rzeczy dzieją się tylko w umysłach programistów ;)

konto usunięte

Temat: Zabezpieczenie aplikacji

Nie ma 100% rozwiązania dobrego w każdej sytuacji.
Trzeba wybierać gdzie się co opłaca a gdzie nie...
Z jednej strony piszesz prawdę, ale to z jednej strony...
W systemie erp, zgodzę się że ważniejszy jest support, wdrożenie go itp... na czas aktualizacje. Bo nie ma czasu na opóźnienia jak ludziom trzeba wyliczyć wypłaty...
bo co wtedy powiesz ludziom, żeby poczekali bo na dniach wyjdzie crack? nie bądźmy śmieszni..
jak przyjdzie kontrola, to jakieś info, że soft jest licencjonowany i wspiera literę prawa... itp... jest wiele sytuacji kiedy nie warto mieć nielegalny soft..
Ale istnieje również druga strona:)
Jest równie wiele aplikacji i rozwiązań, które bez problemu mogą być zabezpieczane w taki bądź inny sposób.. Szczególnie rozwiązania, które działają online i pobierają dane z jakiś zewnętrznych serwisów.. czemu nie zabezpieczyć ich poprzez autentykację na naszym serwisie??
A swoją drogą nie zawsze łatwo można złamać licencję:) i nie zawsze przelicza to się na osobo-godziny:) nie raz po prostu taniej jest to kupić i zaoszczędzić sobie czasu.

można mnożyć przypadków tak samo w jedną jak w drugą stronę..

A i tak najważniejszy jest rozsądek i właściwy wybór w zależności od potrzeb..Łukasz Machowski edytował(a) ten post dnia 16.03.10 o godzinie 21:30

konto usunięte

Temat: Zabezpieczenie aplikacji

Może ujmę to tak:
Nie można pozwolić na to, żeby jakikolwiek wymóg systemowy aplikacji był podyktowany zabezpieczeniem licencyjnym.

To się tyczy stałości adresu MAC, połączenie z internetem, stałość komponentów sprzętowych.

Czy złodziej samochodu w przypadku kiedy nie uda się mu ukraść dany samochód pójdzie do właściciela z propozycją kupna? :-)

konto usunięte

Temat: Zabezpieczenie aplikacji

Nie zrezygnuje po prostu z kradzieży...
co i tak jest dobry wyjściem...
nie zarobiliśmy na sprzedaży, ale nie straciliśmy na kradzieży:) ( nie liczę AC :))Łukasz Machowski edytował(a) ten post dnia 16.03.10 o godzinie 22:11

konto usunięte

Temat: Zabezpieczenie aplikacji

Łukasz Machowski:
Nie zrezygnuje po prostu z kradzieży...
co i tak jest dobry wyjściem...
nie zarobiliśmy na sprzedaży, ale nie straciliśmy na kradzieży:) ( nie liczę AC :))Łukasz Machowski edytował(a) ten post dnia 16.03.10 o godzinie 22:11

Zgadza się.
Tyle, że tutaj dochodzi specyfika rynku oprogramowania; Nie zarobiliśmy na sprzedaży == straciliśmy na kradzieży.

Bo tak naprawdę nie ponosimy kosztów jak w przypadku fizycznych dóbr w przypadku kiedy ktoś je ukradnie.

konto usunięte

Temat: Zabezpieczenie aplikacji

Karim, teoretycznie masz rację. Ale niestety życie (przynajmniej moje), że niestety trzeba kluczyć, kombinować, zabezpieczać, bo ludzie też kombinują i próbują obejść wszystko. Niektórzy sobie oczywiście z takimi zabezpieczeniami poradzą, ale tak samo niektórzy złodzieje samochodów z zabezpieczeniami sobie radzą, inni nie. Chodzi o to, by im maksymalnie życie utrudnić. Jak tego nie utrudnię, nie będę miał po prostu na chleb :) Łukasz też słusznie zauważył, że zależy to też od typu softu - z tym się zgodzę. A soft, który właśnie zabezpieczam, nie jest typem softu, który każdy chce mieć legalny. To program, jakich dziesiątki na świecie. I niestety czasem całe te kombinacje przenoszą się na funkcjonalność aplikacji - też mnie to boli, ale wyjścia nie widzę.

konto usunięte

Temat: Zabezpieczenie aplikacji

Karim Agha:
Bo tak naprawdę nie ponosimy kosztów jak w przypadku fizycznych dóbr w przypadku kiedy ktoś je ukradnie.

Ale gdy ktoś Twój program ukradnie da się wycenić ile czasu straciłeś, jakie poniosłeś koszty itd. To jest strata.

konto usunięte

Temat: Zabezpieczenie aplikacji

Krzysztof Kozłowski:

Ale gdy ktoś Twój program ukradnie da się wycenić ile czasu straciłeś, jakie poniosłeś koszty itd. To jest strata.

A kto ukradnie Twój program? Inny programista, który zdekompiluje kod i będzie to sprzedawał jako swoje dzieło? Klient, który nie chce płacić za używanie aplikacji? Czy wiesz dokładnie ILE stracisz jeśli powyższe przypadki się wydarzą?

Obfuskacja kodu to w 99% przypadkach to budowanie ściany, którą się odgradzamy od nieistniejącego problemu.Sergiusz B. edytował(a) ten post dnia 16.03.10 o godzinie 22:44

konto usunięte

Temat: Zabezpieczenie aplikacji

To ja już może żeby zbytnio nie powtarzać tego co już wielu przede mną napisało (mądrze) podam tylko linki do bardzo fajnych dyskusji na ten temat:

http://stackoverflow.com/questions/109997/how-do-you-p...

http://stackoverflow.com/questions/445911/piracy-prote...

http://stackoverflow.com/questions/1473143/methods-to-...

:-)

konto usunięte

Temat: Zabezpieczenie aplikacji

Sergiusz B.:
Czy wiesz dokładnie ILE stracisz jeśli powyższe przypadki się wydarzą?

Na dzień dzisiejszy wiem, ile bym nie zyskał... Problem może i jest nieistniejący, ale nikt po fakcie nie chce się dowiedzieć, że jednak coś było na rzeczy i kasa przeszła koło nosa i że coś jednak można było zrobić w tej sprawie. Sorry, ale nie jestem zwolennikiem i wyznawcą oprogramowania free, open source też tylko w uzasadnionych przypadkach. Generalnie mam zrobić wszystko, by tzw. zwrot z inwestycji był satysfakcjonujący :)Krzysztof Kozłowski edytował(a) ten post dnia 16.03.10 o godzinie 22:58

konto usunięte

Temat: Zabezpieczenie aplikacji

Krzysztof Kozłowski:

Na dzień dzisiejszy wiem, ile bym nie zyskał... (...) Sorry, ale nie jestem zwolennikiem i wyznawcą oprogramowania free, open source też tylko w uzasadnionych przypadkach. Generalnie mam zrobić wszystko, by tzw. zwrot z inwestycji był satysfakcjonujący :)

Wybacz, ale tak jak myślałem - nie znasz ani skali, ani wartości problemu, w którego obejście JUŻ inwestujesz czas i pieniądze, które się nie zwrócą - już jesteś stratny na tej inwestycji :)

Oprogramowanie free tutaj nie ma nic do rzeczy, sam uważam, że poza kilkoma wyjątkami jest to generalnie pomyłka i mydlenie oczu.

Następna dyskusja:

Programista Aplikacji Klien...




Wyślij zaproszenie do