Jest to problem, który wszyscy musimy rozważyć w pewnym momencie.Ochrona oprogramowania dla małych dostawców
Po wielu latach i wielu podejściach zgadzam się ogólnie z określeniem: "W przypadku każdego oprogramowania chronionego używanego przez więcej niż kilkaset osób, można znaleźć wersję pękniętą. naruszone." Does your employer enforce the use of anti-piracy software?
Co więcej, za każdym razem, gdy piszę o tym temacie, ktoś mi przypomni; "Przede wszystkim, bez względu na rodzaj ochrony, którą zatrudniasz, prawdziwie zaangażowany kraker przeżyje w końcu wszystkie bariery ochronne." What's the best value for money c# code protection for a single developer
Tak więc, nie znosząc tych dwóch, ogólnie rzecz biorąc, prawdziwych zrzeczeń, porozmawiajmy o "ochronie"!
Wciąż uważam, że w przypadku mniejszych aplikacji, które raczej nie będą przesłuchiwać czasu i uwagi wykwalifikowanego dziadka, ochrona JEST warta wysiłku.
Wydaje się oczywiste, że bez względu na to, co zrobisz, jeśli cracker może zmienić wynik instrukcji JEFF (jmp), łatając aplikację, wtedy wszystkie hasła i klucze na świecie nie pomogą.
Moje podejście polegało na zaciemnianiu kodu przy użyciu wirtualizacji za pomocą produktów takich jak: http://www.oreans.com/codevirtualizer.php Jestem bardzo zadowolony z tego produktu. Według mojej wiedzy nie został on pokonany. Mogę nawet skompresować plik wykonywalny z PEcompact Czy ktoś inny ma z tym doświadczenie?
Miał tylko problemy z EXEcryptor http://www.strongbit.com/news.asp Nawet strona jest ból głowy. Skompilowane aplikacje ulegają awarii podczas wykonywania jakichkolwiek wywołań WMI.
Takie podejście pozwala otoczyć mniejsze fragmenty kodu z zaciemniania, a tym samym chronić bezpieczeństwo sprawdzanie itp
używam metody autoryzacji online, aplikacja potrzebuje danych z serwera regularnie, tak nie ma sensu aby użytkownik mógł korzystać z niego poza linią przez dłuższy czas. Z definicji aplikacja jest bezwartościowa, nawet jeśli jest pęknięta.
Prosty szyfrowany uścisk dłoni jest bardzo dobry. Sprawdzam to od czasu do czasu w ramach ochrony przed zaciemnianiem. Jeśli użytkownik zainstaluje aplikację na innym komputerze, po jej uruchomieniu zostanie przesłany nowy identyfikator, a serwer wyłączy stary identyfikator i zwróci nową autoryzację.
Używam również skrótu do skompilowanej aplikacji i sprawdzam ją podczas uruchamiania, aby sprawdzić, czy zmienił się pojedynczy bit, a następnie otwórz aplikację jako plik (z odczytem LOCK) z poziomu aplikacji, aby nikt nie mógł go zmienić. uruchomiona.
Ponieważ wszystkie ciągi statyczne są wyraźnie widoczne w pliku .exe, staram się być ogólny z komunikatami o błędach i tak dalej. Nie znajdziesz nigdzie hasła "Autoryzacja nie powiodło się".
Aby zabezpieczyć się przed zrzutami pamięci, używam prostej techniki zaciemniania tekstu (takiej jak XOR każdy znak) Powoduje to, że dane tekstowe w pamięci są trudniejsze do odróżnienia od zmiennych i tak dalej.
To oczywiście jest AES dla wszelkich danych, które są naprawdę wrażliwe.Lubię tryb licznika dla tekstu, ponieważ powoduje to brak powtarzających się sekwencji ujawniających podstawowe dane, takie jak sekwencja białych spacji.
Jednak przy wszystkich tych technikach, jeśli klucz lub wektor inicjalizacyjny może zostać zrzucony z pamięci lub instrukcja obejścia instrukcji IF, wszystko jest zmarnowane.
Używam raczej instrukcji switch niż instrukcji warunkowej. Następnie tworzę drugą funkcję, która jest w zasadzie ślepym zaułkiem zamiast funkcji, która faktycznie wykonuje pożądane zadanie.
Inną ideą jest kodowanie wskaźników ze zmienną dodaną. Zmienna jest wynikiem autoryzacji (zwykle zero). To nieuchronnie doprowadzi do GPF w pewnym momencie. Używam tego tylko w ostateczności po tym, jak kilka autoryzacji niższego poziomu zakończyło się niepowodzeniem, inaczej prawdziwi użytkownicy mogą go spotkać. Wtedy obniża się reputacja oprogramowania.
Jakich technik używasz?
(To nie jest wątek debaty zasadność wykonania czegoś. Jest on przeznaczony dla tych, którzy zdecydowali się zrobić coś)
Właściwie, kiedy postawiłem pytanie na forum hakerów o niektórych dostępnych obecnie narzędziach ochrony oprogramowania, powiedział: "O Code Virtualizer, stworzyłem CodeUnvirtualizer do pełnej konwersji Virtual Opcodes na język Assembler". Tak więc Code Virtualizer rzeczywiście został pokonany. Ale powiedziawszy to, to narzędzie, które wybiorę, aby zastąpić ASProtect. Większość innych programów po prostu dodaje wiele do exe i znacznie zwiększa prawdopodobieństwo fałszywych alarmów antywirusowych i antyspyware. – smartins