Jak zabezpieczyć małą aplikację

0

Witam.

Piszę małą aplikację na indywidualne zlecenie i chciałbym ją zabezpieczyć przed rozsyłaniem. Wystarczy jakieś małe zabezpieczanie, nie chcę i nie muszę się bawić w jakieś bazy danych itp. Jak to najlepiej zrobić? Wiem że można np. pobrać serial dysku czy adres karty sieciowej, ale nie wiem jak to wszystko ze sobą połączyć.

0

wrzuc licencje do zaakceptowania i ostrzezenie dotyczace nielegalnego kopiowania.
jesli to ty instalujesz klientowi aplikacje to po prostu wrzuc recznie jakis wpis do rejestru systemowego, appka niech go wymaga i tyle.

0

Hm, no właśnie boje się że licencja może nie wystarczyć. Aplikację będę wysyłał przez email.

0

Licencja ("straszydło") to jedyne co potrzebne.

0

no nie wiem. Wielu ludzi klika tylko akceptuj nawet nie czytając komunikatu. Po prostu klient może go przesłać np. koledze i dalej już pójdzie.

0

No to zamień miejscami "instaluj" i "anuluj" ;).
A mówimy ci to dlatego, że zwyczajnie o wiele więcej czasu zajmuje ci teraz wymyślanie swojego świetnego zabezpieczenia niż ogarniętej osobie zajęłoby jego ominięcie.

0

To temat rzeka. Ale można by np. zrobić tak:

  1. Aplikacja którą należy zabezpieczyć miałaby jakieś tam okno aktywacji i dwa zestawy pól. U góry np. jakiś zestaw pól, w które to z automatu można by wstawić (przez sam program) serial wygenerowany na podstawie odczytanych za pomocą odpowiednich funkcji (raczej asembler), serial dysku twardego, manufakturę i jakiś tam serial procka i jeszcze innych urządzeń, opcjonalnie może identyfikatora systemu operacyjnego. I tu np. można by się zabawić w hashowanie tego wszystkiego za pomocą MD5, SHA1, SHA2 czy czego tam innego. I w tych polach w górze okienka dla przykładu może być ten wygenerowany kod który dla konkretnego kompa będzie niezmienny. U dołu kilka pól na kod aktywujący.

  2. Klient wysyła Tobie ten kod mailem i dokonuje płatności

  3. Ty masz inny program, który na podstawie tego kodu generowałby kod aktywacji, klient go otrzymuje i aktywuje program. Ale tutaj trzeba by wziąć pod uwagę fakt, że bezpieczeństwo aplikacji nie powinno się opierać na tajności kodu Twojej aplikacji którą chcesz zabezpieczyć (a kod w .NET łatwo przecież odtworzyć). Wraz z tym serialem klient może np. otrzymywać jakiś zaszyfrowany plik kontrolny, który to zawierałby dane weryfikujące, Twoja appka by to dla przykładu na czas sprawdzania aktywacji rozszyfrowywała, po czym kasowała jakieś tymczasowe pliki.

  4. Istnieje możliwość także zabezpieczenia licencji np. na rok i potem przedłużenia, przy czym tutaj należy uwzględnić możliwość zmiany daty przez klienta. Można również zabezpieczyć program względem ilości uruchomień.

  5. Kod aktywacyjny może być losowy i to też może być jakiś hash typu md5 i to właśnie na ten kod mogą być szyfrowane te pomocnicze pliki kontrolne do weryfikacji aktywacji. To by można użyć też do zabezpieczenia na określony tylko czas np. rok.

Oczywiście rejestr tu jak najbardziej będzie wskazany, czy też może jakieś pliki żeby po aktywacji ten serial zapisać i żeby nie trzeba było wpisywać za każdym uruchomieniem kodu aktywacji od nowa.

Co do szyfrowania to można by też zastanawiać się nad użyciem RSA Encryption, ewentualnie Rijndael ale RSA jest naprawdę potwornie silne.

0

A może by po prostu zrobić że serial mógłby być użyty tylko raz na komputerze na którym został użyty za pierwszym razem. Myślę że to byłoby dobre rozwiązanie, tylko nie wiem do końca jak to zrobić.

0

@drorat1 Nawet jak przejade jakimś obfuscatorem?

A zresztą. Posłucham was i wrzucę licencję. Jak się bardziej "rozprzestrzeni" będę mógł usuwać nie?

0

A jaką umowę masz podpisaną z klientem? Że sprzedajesz mu tylko jedną licencję na program skompilowany bez przekazania praw autorskich? Jeśli tak zawsze możesz wejść na drogę sądową z tym kimś jeżeli złamie umowę, którą mam nadzieje podpisaliście razem.

0
bolekOl napisał(a):

@drorat1 Nawet jak przejade jakimś obfuscatorem?

No jest też taka opcja. Po prostu można by tak artystycznie zrobić, żeby kod po odtworzeniu jakimś ILSpy był w ogóle praktycznie nie do zrozumienia.

Druga opcja: plik exe można by np. szyfrować i deszyfrować jakimś loaderem, gdzie kod może być nawet jawny. I każdorazowa deszyfracja do jakiegoś losowego pliku exe w losowym katalogu, później kasowanie.

Tylko znowu tutaj z hasłem jest problem. Tak jak napisałem, to temat rzeka i jak sądzę można co najwyżej tylko ograniczyć to ryzyko że ktoś przechwyci i uruchomi gdzie indziej. Sam zresztą chciałbym poznać jakieś propozycje.

0

wez otworz javascript obfuscator, wklej tam jakas prosta funkcje weryfikujaca 1 hardcodowany numer seryjny, wklej zobfuscowana jako string do kodu i uzyj jakis silnik JS do wywolania jej z inputem uzytkownika. Wiekszosc osob nie umie crackowac. Jak ktos umie to i tak zlamie, jak nie to wystarczy

0

Tu jest lista programów do zaciemniania kodu .NET
http://www.csharp411.com/net-obfuscators/

Ja ćwiczyłem z tym
https://code.google.com/p/obfuscar/

i sprawdzałem programem DotPeek 1.2

Zaciemnianie robi się na wynikowych plikach exe albo dll, zmianie ulegają nazwy klas, metod, przestrzenie nazw, nazwy użytych wizualnych kontrolek. Mają jakieś jednoliterowe nazwy. Pewnie po czymś takim nawet hakerowi będzie naprawdę ciężko dojść co do czego a im bardziej skomplikowany i rozbudowany projekt to tym bardziej.

Generalnie chodzi o zaciemnienie kodu w ten sposób, żeby haker nie doszedł do tego co jest odpowiedzialne za aktywację i w jaki sposób to się dzieje. Można też dokonać zaciemnienia samego kodu i jego ponowną kompilację.

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