Jak mogę chronić my.NET zespoły z dekompilacji?

Pierwsza rzecz, której się nauczyłem, gdy zaczynałem z C#, była najważniejsza. Możesz dekompilować dowolny zespół. NET za pomocą reflektora lub innych narzędzi. Wielu programistów nie jest tego świadomych i większość z nich jest zszokowana, gdy pokazuję im ich kod źródłowy.

Ochrona przed dekompilacją jest wciąż trudnym zadaniem. Nadal szukam szybkiego, łatwego i bezpiecznego sposobu, aby to zrobić. Nie chcę zaciemniać kodu, więc moje nazwy metod będą a, b, C lub tak. Reflektor lub inny narzędzia nie powinny w ogóle rozpoznawać mojej aplikacji jako. NET assembly. Wiem już o niektórych narzędziach, ale są one bardzo drogie. Czy istnieje inny sposób ochrony moich aplikacji?

EDIT:

Powodem mojego pytania nie jest zapobieganie piractwu. Chcę tylko powstrzymać konkurentów przed odczytaniem mojego kodu. Wiem, że to zrobią i już to zrobili. Nawet mi tak powiedzieli. Może jestem trochę paranoikiem, ale rywale biznesowi czytający mój kod nie sprawiają, że czuję się dobrze.

Author: Holli, 2010-03-19

12 answers

Jedną rzeczą, o której należy pamiętać, jest to, że chcesz to zrobić w sposób, który ma sens biznesowy. Aby to zrobić, musisz określić swoje cele. Więc, jakie są dokładnie Twoje cele?

Zapobieganie piractwu? Ten cel nie jest możliwy do osiągnięcia. Nawet natywny kod może być dekompilowany lub pęknięty; mnogość warezów dostępnych online (nawet dla produktów takich jak Windows i Photoshop) jest dowodem na to, że zdeterminowany haker zawsze może uzyskać dostęp.

Jeśli nie można zapobiec piractwu, to może po prostu je ograniczyć? To też jest błędne. Wystarczy jedna osoba, aby złamać twój kod, aby był dostępny dla wszystkich. Za każdym razem musisz mieć szczęście. Piraci mają szczęście tylko raz.

Daję ci to celem powinno być maksymalizacja zysków.Wydaje się pan wierzyć, że powstrzymanie piractwa jest konieczne do tego przedsięwzięcia. Nie jest. Zysk to po prostu przychód minus koszty. powstrzymanie piractwa zwiększa koszty . Wymaga wysiłku, co oznacza dodanie kosztów gdzieś w proces, a więc zmniejsza tę stronę równania. ochrona Twojego produktu nie robi również nic , aby zwiększyć twoje dochody. wiem, że patrzysz na tych wszystkich piratów i widzisz wszystkie pieniądze, które mógłbyś zarobić, gdyby tylko zapłacili za Twoje opłaty licencyjne, ale rzeczywistość jest taka, że to się nigdy nie wydarzy. Jest tu trochę hiperboli, ale ogólnie uważa się, że piraci, którzy nie są w stanie złamać Twojego bezpieczeństwa, znajdą podobny produkt, który mogą złamać lub bez niego. Nigdy nie kupują go zamiast tego, a zatem nie reprezentują utraconej sprzedaży.

DODATKOWO, zabezpieczenie Twojego produktu faktycznie zmniejsza przychody . Są ku temu dwa powody. Jednym z nich jest niewielki odsetek klientów, którzy mają problemy z aktywacją lub zabezpieczeniami, a zatem decydują się nie kupować ponownie lub prosić o zwrot pieniędzy. Drugim jest niewielki odsetek osób, które faktycznie próbują pirackiej wersji oprogramowania, aby upewnić się, że działa przed zakupem. Ograniczenie pirackiej dystrybucji Twojego produktu (jeśli jesteś w stanie odnieść w tym jakiś sukces) uniemożliwia tym ludziom kiedykolwiek wypróbowanie Twojego produktu, a więc nigdy go nie kupią. Co więcej, piractwo może również pomóc w rozpowszechnieniu Twojego produktu do szerszej publiczności, docierając w ten sposób do większej liczby osób, które będą skłonne za niego zapłacić.

Lepszą strategią jest założenie, że twój produkt będzie piracki i zastanów się, jak wykorzystać sytuację. Jeszcze kilka linków w temacie:
Jak zapobiec kradzieży kodu?
zabezpieczanie aplikacji. NET

 96
Author: Joel Coehoorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-10 21:35:39

W pracy używamy Dotfuscator z rozwiązań prewencyjnych.

Chociaż nie da się chronić. NET assemblies 100% Dotfuscator sprawia, że jest to wystarczająco trudne, myślę. Mam wiele technik zaciemniania;

Cross Assembly Renaming
Schematy Zmiany Nazw
Zmiana Nazwy Przedrostka
Enhanced Overload Induction
Przyrostowe Zaciemnianie
Raport zmiany nazwy HTML
Przepływ Sterowania
String Encryption

I okazało się, że nie są bardzo drogie dla małych firm. Mają specjalne ceny dla małych firm.

(Nie Nie pracuję na prewencję ; -))

Istnieją freeware oczywiście alternatywy;

 14
Author: Rhapsody,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-19 15:02:46

Hostuj swoje usługi w dowolnym dostawcy usług w chmurze.

 11
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-02 12:58:18

Jak zapobiec dekompilacji dowolnej aplikacji C#

W zasadzie opisuje całą sytuację.

W pewnym momencie kod będzie musiał zostać przetłumaczony na bajt kodu maszyny wirtualnej, a użytkownik może go wtedy uzyskać.

Kod maszynowy też się nie różni. Dobry interaktywny disassembler / debugger, taki jak IDA Pro sprawia, że prawie każda aplikacja natywna jest przezroczysta. Debugger jest wystarczająco inteligentny, aby użyć AI do identyfikacji popularnych API, kompilatora optymalizacje itp. pozwala on użytkownikowi na drobiazgowe przebudowywanie konstrukcji wyższego poziomu z zestawu wygenerowanego z kodu maszynowego.

I IDA Pro również w pewnym stopniu wspiera. Net.

Szczerze mówiąc, po kilku latach pracy nad projektem inżynierii odwrotnej ( dla kompatybilności), najważniejsze, co wyciągnąłem z mojego doświadczenia, to to, że prawdopodobnie nie powinienem martwić się zbytnio o ludzi kradnących mój kod. Jeśli ktoś tego chce, to nigdy nie będzie bardzo trudno go zdobyć, bez względu na to, jaki plan ja wdrożenie.

 10
Author: kervin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:33

Wiem, że nie chcesz zaciemniać, ale może powinieneś sprawdzić dotfuscator , zabierze Twoje skompilowane zespoły i zaciemni je za Ciebie. Myślę, że może nawet je zaszyfrować.

 5
Author: Muad'Dib,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-22 17:07:23

Żaden obsfuscator nie ochroni Twojej aplikacji, nawet żaden opisany tutaj. Zobacz ten link, jest to deobsfuscator, który może deobsfuscator prawie każdy obsfuscator tam.

Https://github.com/0xd4d/de4dot

Najlepszym sposobem, który może Ci pomóc (ale pamiętaj, że nie są one również pełne prof) jest użycie mieszanych kodów, kodowanie ważnych kodów w języku niezarządzanym i tworzenie DLL jak w C lub C++ , a następnie chroń je za pomocą Armageddon lub Temida. Temida jest nie dla każdego krakera, jest to jeden z najlepszych ochraniaczy na rynku, może również chronić Twoje oprogramowanie. NET.

 4
Author: Tejashwi Kalp Taru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-10 16:59:28

Słyszałem o niektórych projektach, które bezpośrednio kompilują IL do kodu natywnego. Możesz uzyskać dodatkowe informacje z tego postu: Czy jest możliwe skompilowanie kodu. NET IL do kodu maszynowego?

 3
Author: Vitaliy Liptchinsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:38

Używamy {SmartAssembly} do ochrony. NET rozproszonej aplikacji na poziomie korporacyjnym i to nam się udało.

 3
Author: Dana Holt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-19 15:01:55

Jeśli chcesz w pełni chronić swoją aplikację przed dekompilacją, spójrz na Hasp Aladdin. Zespoły można zawijać w zaszyfrowaną powłokę, do której dostęp ma tylko aplikacja. Oczywiście zastanawia się, jak są w stanie to zrobić, ale to działa. Nie wiem jednak, czy chronią one Twoją aplikację przed załączeniem/odbiciem, co jest Crack.NET jest w stanie to zrobić.

-- Edytuj Należy również uważać na kompilację do kodu natywnego jako rozwiązania...istnieją Dekompilatory kodu natywnego jako cóż.

 2
Author: Michael Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-19 15:00:55

Jeśli ktoś musi ukraść twój kod, prawdopodobnie oznacza to, że twój model biznesowy nie działa. Co mam na myśli? Na przykład kupuję twój produkt, a następnie proszę o wsparcie. Jesteś zbyt zajęty lub uważasz, że moja prośba jest nieważna i marnujesz swój czas. Dekoduję twój produkt, aby wesprzeć moją relatywną działalność. Twój produkt staje się dla mnie bardziej wartościowy, a ja ustalam priorytety mojego czasu w sposób pozwalający rozwiązać model biznesowy wykorzystania Twojego produktu. Rekoduję i zmieniam markę Twojego produktu i więc idź i zarabiaj pieniądze, które postanowiłeś zostawić na stole. Istnieją powody do ochrony kodu, ale najprawdopodobniej patrzysz na problem ze złej perspektywy. Oczywiście, że jesteś. Ty jesteś programistą, a ja biznesmenem. ;- ) Pozdrawiam!

Ps. Jestem też deweloperem. tj. "koder"

 0
Author: Adam Cox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-19 13:58:14

Masz API?

Zamiast próbować chronić jeden plik ddl w jednym z produktów na wszystkich urządzeniach klientów, dlaczego nie utworzyć usługi API dla cennych funkcji produktu? Pozwól rzeczywistemu produktowi zapisanemu na urządzeniu korzystać z tego interfejsu API, aby dostarczyć produkt tak, jak chcesz.

Myślę, że w ten sposób Masz 100% pewność, że Twój kod nie jest dekompilowany i ustawiasz własne limity w swoim API, aby Programiści / hakerzy nie zużywali twojego API w sposób nie chcesz tego.

To pewnie jeszcze trochę pracy, ale w końcu masz kontrolę.

 0
Author: CularBytes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-29 18:53:13

Wiem, że to stare, ale Themida jest najbardziej zaawansowanym oprogramowaniem anty-crackingowym, jakiego kiedykolwiek używałem.
Ale nie jest za darmo.

 0
Author: sh4dowb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-20 19:37:39