Jak zapobiec dekompilacji dowolnej aplikacji C# [zamknięty]

Planujemy stworzenie aplikacji serwerowej z wykorzystaniem C# i MySQL. Planujemy sprzedać produkt na półce, jak każde inne oprogramowanie użytkowe. Martwimy się o dekompilację naszego produktu, który ma pewną przewagę nad konkurencją pod względem użyteczności i powiązanej funkcjonalności.

Jak możemy zapobiec dekompilacji naszego oprogramowania, aby logika biznesowa produktu pozostała nienaruszona?

Słyszeliśmy o reflektorze i innych dekompilatorach co czyni nasz kod bardzo podatnym na kopiowanie.

Naszą bazą klientów nie są korporacje, ale lekarze, którzy sami mogą tego nie robić, ale nasi konkurenci mogą chcieć kopiować / wyłączać licencjonowanie lub nawet replikować kod / funkcjonalność, aby wartość naszego produktu spadła na rynku.

Wszelkie sugestie, aby temu zapobiec, są mile widziane.

Author: Richardissimo, 2009-08-14

12 answers

Jeśli wdrożysz. NET assemblies na swoich komputerach klienckich, pewien rodzaj dekompilacji zawsze będzie możliwy za pomocą reflektora i podobnych narzędzi.

Jednak sytuacja ta nie różni się znacząco od sytuacji, z którą można się spotkać, pisząc aplikację w natywnym C++. Zawsze możliwe jest dekompilowanie rzeczy - gdyby było to niemożliwe, procesor też by tego nie zrozumiał.

Nigdy nie pokonasz eksperta crackera-potraktują Twoje bezpieczeństwo jako intelektualne zagadka do rozwiązania dla samego wyzwania.

Pytanie kręci się wokół tego, jak trudno jest pokonać praktyki licencyjne i zwrot z inwestycji.

Usiądź z arkuszem kalkulacyjnym i przejrzyj możliwe scenariusze-niebezpieczeństwo jest prawdopodobnie mniejsze niż myślisz.

Czynniki takie jak" łatwość użycia " są widoczne w oprogramowaniu dla każdego użytkownika do obserwowania - więc można pomyśleć, że jest łatwy do skopiowania. Ale dobre wrażenia użytkownika są rzadkie (i rzadko kopiowane dobrze), ponieważ większość deweloperzy (w tym ja) nie przypominają typowych użytkowników.

Sugerowałbym, żebyś skoncentrował się na utrudnianiu pracy krakersowi, bo nigdy nie można tego uniemożliwić, po prostu nieopłacalne.

Jedna możliwość do wypróbowania: można wstępnie skompilować Zespoły do kodu natywnego jako część procesu instalacji. Paint.NET robi to ze względów wydajnościowych. Wierzę, że gdy już to zrobisz, możesz odrzucić oryginalne zespoły i użyć zoptymalizowanego, natywnego kodu wydania.

 23
Author: Bevan,
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
2009-08-16 10:22:42

Na moim miejscu nie próbowałbym zaciemniać; zrobiłbym:

  1. nie martw się o to i staraj się nieustannie ulepszać i pozostawać z przodu

Ale po drugie

  1. rozważ dostarczanie "tajnych" usług przez sieć. To do ciebie należy decyzja, jak krytyczne i możliwe jest to; ale to "zapobiega" dekompilacji, ponieważ użytkownik końcowy nie ma nawet kodu.
 7
Author: Noon Silk,
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
2009-08-16 10:25:57

Google dla. NET Obfuscator. Znajdziesz tu wiele produktów, które pomogą w tym. Istnieją również podobne pytania już zadawane w Stack Overflow.

Oto kilka:

EDIT : szukając Narzędzi Do Usuwania maskowania, natknąłem się na narzędzie open source De4Dot. To narzędzie obsługuje dekompilację zaciemnionych bibliotek DLL utworzonych przez większość komercyjnych narzędzi i robi całkiem dobrą robotę też.

 6
Author: Ganesh R.,
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:01:35

/Align = "left" / Spices.Net Obfuscator wyglądał jak najlepsza rzecz na rynku.

Nie, Nie pracuję dla nich. :)
 0
Author: ine,
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
2009-08-14 05:56:02

Używam smartassembly . Jest prosty w użyciu, a także ma możliwość wysyłania raportów o awariach z powrotem zbyt wbudowany.

 0
Author: Geoff Appleford,
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
2009-08-14 05:56:27

Oto podobne pytanie o Obfuskatory . Być może dostarcza ci dobrych informacji.

 0
Author: Jehof,
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:26:06

Zaciemniacze, o których inni wspominali, są prawdopodobnie bardzo dobre.

Alternatywnym podejściem, którego możesz nie brać pod uwagę, jest kodowanie części podstawowej logiki biznesowej przy użyciu języka, który jest w pełni skompilowany do kodu maszynowego, takiego jak C++.

Korzyść z tego polega na tym, że znacznie utrudnia to komuś dekompilację Twojego kodu. Wadą tego jest to, że masz kod w dwóch językach do utrzymania. Może to nie jest najlepsze podejście do twojej sytuacji, ale jest przydatne w przypadkach, gdy tylko niewielka część kodu musi być zaciemniona, podczas gdy pozostała część kodu to UI fluff.

Jako przykład, twój pakiet oprogramowania medycznego może wykonywać wykrywanie krawędzi powiedzmy, niektórych gruczołów w celu poinformowania lekarza o wielkości tego gruczołu. Algorytm obliczania wielkości gruczołu z obrazu bitmapowego byłby zawarty w DLL napisanym w C++.

 0
Author: Charlie Salts,
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
2009-08-14 06:15:44

Aby odpowiedzieć na twoje pytanie dotyczące owijarki C++ wokół kodu. Net; nie sądzę, że to zadziała, ponieważ po wdrożeniu aplikacji ostateczna DLL C++ i dll. NET zawierający kod logiki biznesowej będą osobnymi podmiotami, a ci, którzy chcą dostać się do logiki biznesowej nadal będą mogli po prostu wybrać.Net dll i zajrzeć do środka.

 0
Author: user20358,
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
2009-08-14 08:45:03

Warto rozważyć Remotesoft Salamander Protector jest to znacznie lepsze niż cokolwiek innego, ponieważ uniemożliwia dekompilację do języka wysokiego poziomu.

Oczywiście, każdy, kto jest ekspertem, może spędzić wystarczająco dużo czasu z Twoim oprogramowaniem i dowiedzieć się, ponieważ niektóre dekompiluje, ale ukrywa cały zestaw i metody get

Więc mogą dostać szczyt, ale to wszystko. muszą wymyślić resztę, która obniża prawdopodobieństwo, że ktokolwiek tylko go rozbijam.

Hope this helps

 0
Author: Spencer,
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
2011-10-07 15:09:53

Pisanie w tym wątku po długim czasie. Zakupiliśmy oprogramowanie o nazwie Intellilock, które jest pomocne w zapobieganiu dekompilacji, zaciemnianiu, a także posiada silny moduł licencjonowania.

Nie zdecydowaliśmy się na . Net Reactor , mimo że ma więcej kontroli prewencyjnych, ponieważ Intellilock służył naszemu celowi wystarczająco dobrze.

 0
Author: Kalpak,
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
2011-10-07 15:10:37

Obfuscator myli kod, ale protector chroni. Możesz użyć. Net protector: NetWinProtector

 0
Author: Anton Chernous,
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-01-19 01:43:00

Intellilock dobrze służył naszemu celowi pod względem maskowania, jak również licencjonowania. Ale nie polecam produktu, ponieważ wsparcie nie jest do znaku. Nigdy nie otrzymaliśmy odpowiedzi na zadany problem. Musieliśmy szukać i badać na własną rękę lub nawet zmienić wymóg biznesowy, aby osiągnąć pewne cele.

Poprzez tę odpowiedź nie zamierzam promować lub degradować żadnego oprogramowania, ale po prostu chcę, aby ludzie wiedzieli o produkcie, z którego korzystamy, aby mogli mądrze decyzja.

 0
Author: Kalpak,
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-04-18 17:01:54