Jak zabezpieczyć program napisany w delphi ?

Jak zabezpieczyć program napisany w delphi ?

Wątek zablokowany 2012-12-27 01:18 przez Demonical Monk .

F1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

Witam niedawno ktoś zdekomplikował lub zrobił co innego sam nie wiem ... i dostał dane których nie powinien... jest jakiś dobry sposób na zabezpieczenie aplikacji przed tego typu atakami ?

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
0

To temat rzeka, może niech się inni wypowiedzą. Na pewno nie należy trzymać żadnych poufnych rzeczy w exeku niczym nie obfuscowanym ani nie spakowanym. Jednak zdolny reverser jak się uprze to złamie każde zabezpieczenie. To tylko kwestia czasu. Do zabezpieczenia są różne narzędzia i rozwiązania.

F1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

No wiem że w 100% aplikacji nie zabezpiecze tylko chodzi mi o to aby pierwszy lepszy laik nie znalazł tych danych nie dałoby tutaj czasem jakieś szyfrowanie stringów ?

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
0

Pewnie by się dało. Na totalnych laików wystarczą jakieś proste algo. Nawet oparte o jakiś xor czy szyfr cezara. Na google masz pełno róznych przykladowych algorytmów oraz informacji.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
0

jest jakiś dobry sposób na zabezpieczenie aplikacji przed tego typu atakami ?

Ale zabezpieczenie czego i gdzie? Nie wysiliłeś się jeśli chodzi o opis problemu; Nie wiemy co chcesz zabezpieczyć więc nie wiadomo co Ci doradzić;

tylko chodzi mi o to aby pierwszy lepszy laik nie znalazł tych danych nie dałoby tutaj czasem jakieś szyfrowanie stringów ?

A co znajduje się w tych łańcuchach? Hasła jakieś, inne poufne informacje? Tak jak kolega wyżej napisał nie tyle można, a trzeba szyfrować te łańcuchy; Jeśli dostęp do aplikacji będą mieli jedynie totalne noob'y, to szyfr cezara i tak wystarczy, ale jeśli ktoś bardziej doświadczony to ww. szyfr nie wystarczy; Można zastosować znane implementacje algorytmów czy to dwustronnych, czy funkcji skrótu, ale nie dość, że trzeba mieć o nich pojęcie, to jeszcze trzeba umieć je zaimplementować i dostosować do własnych potrzeb;

Na obecny stan informacji o problemie mogę jedynie polecić dobry algorytm szyfrujący i zapis ważnych danych do plików amorficznych - przysłowiowy "matoł" nie będzie potrafił choćby otworzyć pliku binarnego (bo większość laików nie wie co to HexEdytor), a co dopiero przeanalizować jego zawartość, wyciągnąć odpowiednie bloki i odszyfrować je; Ktoś kto zajmuje się RE poradzi sobie, jeśli w ogóle będzie się opłacało poświęcać czas na wyciągnięcie tych poufnych informacji;

Jak powszechnie wiadomo nie ma zabezpieczeń idealnych/nie do złamania więc jest się nad czym zastanawiać;

Opi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1034
0

Siłę zabezpieczenia stosuje się w zależności od tego co ma być zabezpieczone.

Im dane są cenniejsze, tym szyfrowanie/zabezpieczanie jest bardziej skomplikowane, przechodzi przez kilka deszyfracji.
Do prostych zabezpieczeń wystarczą popularne metody podane na tym forum.

  • Rejestracja: dni
  • Ostatnio: dni
0

Ja korzystam z exe-protectora Pelok i od ładnych paru lat żadnego cracka do naszego oprogramowania nie widziałem. A różne systemy testowałem na VCL jakieś komponenty, zawsze to ktoś połamał.

Opi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1034
0

I każdy antywirus przyczepia się, że program jest typu "Generic", co sugeruje, że AV ma podejrzenia. A to wystarczy, aby w większości antywirusów automatycznie skasować potencjalne zagrożenie.

Takie są efekty wszelkich mało znanych pakerów + szyfratorów binarek.

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Jak znam życie nic takiego nie byłoby konieczne przy sensownym designie aplikacji, a szczególnie protokołu wymiany danych.

F1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

program łączy się z bazą danych mysql i są tam dane do bazy ;/

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
0

Trzeba te dane jakoś szyfrować jak chcesz zabezpieczyć to przed laikiem który chce przeglądać exe za pomocą hexedytora lub jakiegoś programu wyszukującego stringi to wystarczy jakieś szyfrowanie i nie musi być żaden zaawansowany algorytm może być nawet zwykłe xor natomiast jeżeli coś poważniejszego to silniejszy algorytm lub steganografia (ukrywasz tekst w innych danych np. obrazku lub pliku dźwiękowym, obrazkiem mógłby być np. z pozoru niewinny splash screen programu) ale tak naprawdę nie da się zabezpieczyć na 100% jak ktoś się uprze użyje debuggera postawi breakpoint na funkcję łączenia się z bazą i znajdzie twoje dane "na tacy". Są różne sposoby aby utrudnić debugowanie, deasemblację ale jak ktoś się uprze i ma odpowiednią wiedzę to jak już ktoś napisał każde zabezpieczenie można złamać to tylko kwestia czasu.

F1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

najbardziej chodzi o tego hex editora i desamblacje :(

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2518
0

trzymaj dane na jakimś zewnętrznym serwerze i pobieraj je z niego po wpisaniu prawidłowego hasła. np.: piszesz prostą stronkę w php która zwraca te dane jeśli wysłałeś w formularzu prawidłowe dane (poprawny user/pass). Wszystko co masz zapisane w EXE jest potencjalnie do odczytania

F1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

krwq mógłbyś dać jakiś przykład ?

Opi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1034
0

Pobieranie danych z serwera powoduje, że mamy do rozwiązania co najmniej dwa problemy z zabezpieczeniem.

  1. Szyfrowanie wewnętrzne danych do połączenia
  2. Połączenie szyfrowane w celu pobrania danych / Pobranie zaszyfrowanych danych

I kwestia dostępu do internetu...

Zaletą jednak tego rozwiązania jest to, że w momencie wykrycia złamania zabezpieczenia, możemy odciąć dostęp do danych np.: zmianą hasła / wyłączeniem serwera.

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Gadacie tak nieprofesjonalne durnoty że aż serce boli. Żadnych xorów albo innych wymysłów. Postawić sensowny frontend i tyle! Problem przestaje istnieć.

Programm3r
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

@kAzek Racja całkowita. Można je w pewien sposób zaszyfrować, lecz zawsze się ktoś znajdzie, kto odszyfruje stringa.

Zaszyfrować można również metodą bez używania wszelkiego typu programów, lecz niestety, niesie to za sobą "skutki uboczne" - program waży więcej.
Jeśli autor postu jest zainteresowany, poproszę o napisanie na PW. Nie będę tutaj tego pisać, ponieważ jest to długie do wytłumaczenia.

Oczywiście, jest opcja szyfrowania za pomocą programu do tego przeznaczonego. O tym decyduje już sam autor aplikacji.

@Demonical Monk FrontEnd też jest dobrym rozwiązaniem. Jak najbardziej.

Pozdrawiam!

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
1

Autor wątku napisał że potrzebuje zabezpieczyć połączenie z bazą danych, to o jakim szyfrowaniu wy, za przeproszeniem, pieprzycie?
Coś takiego jest w stanie rozsadzić dowolny gimbus wyposażony w debugger i nie dość że zmodyfikuje/zniszczy dane innych użytkowników to jeśli ma IQ przynajmniej 1 powyżej ślinienia jest w stanie stworzyć istotne zagrożenie dla innych użytkowników programu. Błąd projektowy leży u podstaw, należy w ogóle zrezygnować z bezpośredniego łączenia się z bazą.

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
0

Zabezpieczyć na 100% się nie da i o tym napisałem ale pytania było o hexedytor .

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.