czy bezpieczne?

0

Witam,
Zrobilem sobie taki maly menedzer hasel z pomoca komponentu MasEdit i Memo. Na memo wpisane sa wszystkie hasla. I teraz mam takie pytanie. Caly kod wyglada mniej wiecej tak:

var haslo:string[15];
begin
haslo:='haselko';
if maskedit1.text=haslo then memo1.Visible:=true
else
ShowMessage('Błędne hasło. Wprowadź hasło jeszcze raz')

Nic nie jest zapisywane w zadnym pliku, nic nie jest szyfrowane. Wszystko jest ze tak powiem w zrodle. Czy jest to bezpieczne, czy da sie to jakos rozkodowac, aby uzyskac haslo dostepowe badz zawartosc komponentu memo?

0

Dla kogoś znającego asm'a i umiejącego się posługiwać debuggerem, nie będzie to stanowiło problemu. Natomiast przeciętny użytkownik raczej sobie z tym nie poradzi.

0

bo mozna to tylko rozkodowac do postaci asemblera?

0

Zgodze sie z thenkles. Dla kogoś kto sie zna na crackowaniu nie będzie z tym raczej problemu. Jeżeli chcesz zabezpieczyć mały programik na swoim kompie, to powinno wystarczyć. Jednak jeśli piszesz niezła aplikacje, to raczej powinieneś to zmienieć. Zaszyfruj hasło, wprowadź kilka lini kodu dla zmyłki itd.

0

W nowym chipie (9/2004) jest calkiem dobry artykul o crackowaniu - jest tam miedzy innymi napisane jak pisac bezpieczne programy - POLECAM !!!

0

sposob jest dobry jesli nie masz zbyt nietypowego hasla - dlaczego ? jak otworzysz w notatniku swoj exe, wezmiesz szukaj i wpiszesz swoje haslo to .. ono tam bedzie

0

Uzyj do tego md5 i problemu nie bedzie.

0

Poniższy kod:

if maskedit1.text=haslo then memo1.Visible:=true
else
ShowMessage('Błędne hasło. Wprowadź hasło jeszcze raz')

można zinterpretować tak:

if (Warunek spełniony) then (Program działa normalnie)
else
(Włącz jakieś ograniczenia, czy Wyświetl komunikat typu "Błędne hasło")

Czegoś takiego nigdy nie wolno robić!

Zwróć uwagę, że o poprawności/niepoprawności hasła (w tym przypadku) decyduje tylko jeden warunek.
Nawet początkujący cracker nie będzie miał z tym większych problemów. Problem może być tylko ze znalezieniem tego fragmentu w zdeasemblowanym kodzie. No, ale SoftICE + BPX xxxx i już go mamy (niekiedy wystarczy tylko sam deasembler).
Po deasemblacji będzie to wyglądać mniej więcej tak (w dużym uproszczeniu):

mov eax, podana_wartość
cmp eax, prawidłowa_wartość
je jakiś_adres

(je lub jakiś inny skok warunkowy)

JE - to skok warunkowy (Jump if Equal), który wystarczy tylko zmienić na przeciwny JNE (Jump if Not Equal) i już po zabezpieczeniu!
Jeśli ten skok musi się wykonać, to można zmienić warunkowy JE na bezwarunkowy JMP.
Jeśli ten skok zostanie wykonany "gdy nieprawidłowe hasło", to wystarczy tę linię (ze skokiem) wy-NOP-ować.

Tego typu sprawdzanie występuje w wielu programach. Często wcześniej wykonywane są mniej lub bardziej złożone operacje, ale w końcu decyduje tylko jedno porównanie. Pierwszą rzeczą jaką wykona cracker łąmiący zabezpieczenie, nie będzie wcale analiza algorytmu sprawdzjącego, a właśnie próba znalezienia takiego decydującego porównania i skoku.

//////////////////////////
Jeśli chcesz zaprogramować hasło w kodzie nigdy nie rób czegoś takiego:
zmienna := 'prawidłowe hasło'
Wystarczy tylko wyciągnąć łańcuchy tekstowe z sekcji z kodem (najczęściej CODE lub TEXT) wewnątrz pliku EXE i w otrzymanej liście łańcuchów będzie również 'prawidłowe hasło'!

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