Zabezpieczanie aplikacji w C# / CrackMe

0

A więc czy jest jakiś w miarę pewny sposób zabezpieczenia programu?

Wiem że można użyć Obfuscatora np. ConfuserEx'a ale to nie jest nic pewnego i potrafi zwiększyć rozmiar pliku
Napisałem program który pyta o hasło i jest takim miszmaszem różnych metod
Wykrywa on podpięty debugger i (powinien, nie mogę przetestować) VM i wtedy symuluje błąd(a może powinien po prostu się wyłączać? )
Sam program można zdekompilować za pomocą dnSpy i to jest pewne
Ale skoro nie można go (chyba)debugować, to czy w takim przypadku zaciemnienia by dużo zmieniło?

Wiem że nie da się stworzyć w 100% odpornego programu ale czy oprócz metod które wymieniłem są jakieś inne?
Chodzi mi o takie które nie wymagają serwera.

Jedyne które mi jeszcze przychodzą to:
Szukanie procesów programów typu: dnSpy, ILSpy (Cheat Engine? Debuggery?)
Ewentualne sprawdzanie czy nie została podpięta żadna biblioteka (DLL Injection)

Pytam bardziej z ciekawości niż z konieczności i dziękuje za wszystkie odpowiedzi ^ . ^
Jeżeli ktoś chce się pobawić w takie retarted CrackMe to program z kodem źródłowym jest pod linkiem (kod jest brzydki i lepiej w niego nie patrzeć bo może to znacznie(?) ułatwić sprawę)
Link

1

Twoje zabezpieczenia można złamać za pomocą dowolnego hex-edytora. Wystarczy zmodyfikować 1 (jeden) bajt i program pokazuje flagę normalnie.
W załączniku masz obrazek jak to się robi (możesz sam spróbować zmienić plik - adresy masz podane).
Powinieneś się trochę bardziej postarać :)

Pozdr.
rcmjpg.jpg

0

Dziękuje za odpowiedź
W sumie to domyślałem się że zcrackowanie będzie łatwe (w końcu "retartedCrackMe" :D)

Nie miałbyś może jakiś porad jak utrudnić coś takiego?
..
..
..
..
..
PS: dnSpy > ILSpy :D

1

Obfuskacja jest w większość przypadków łatwo odwracalna, nawet przy użyciu darmowych narzędzi (np. de4dot, swoją drogą jest open source, więc może rzuć okiem na kod i poszukaj inspiracji).
Bez serwera będzie ciężko, bo jednak deobfuskacja, dekompilacja i grzebanie w pamięci pozwala na obejście wielu zabezpieczeń.
W C# jest to o tyle łatwiejsze, bo wynikowo masz CIL. Lepiej chyba próbować z czymś, co będziesz kompilować do postaci natywnej. Wtedy przynajmniej złamanie tego będzie wymagało większej ilości czasu.
Nie bez powodu nikt nie bawi się w takie zabezpieczanie. :D

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