Chciałbym się zapytać czy po napisaniu biblioteki dll w C# istnieje możliwość zdekompilowania jej. Jakie istnieją sposoby zabezpieczenia dll oraz aplikacji napisanej w wpf. W folderze z aplikacją posiadam wyłącznie plik uruchomieniowy *.exe oraz dll.
Dekompilacja kodu w C# - http://www.red-gate.com/products/dotnet-development/reflector/
Możesz kompilować do własnej VMki i uruchamiać wszystko z jej poziomu (lub skorzystać z gotowego rozwiązania - czytałem o takich, lecz nazw już nie pamiętam), natomiast to niesamowicie zwolni działanie aplikacji.
Cóż, generalnie przed dekompilacją nie ma doraźnego zabezpieczenia.
W dll'ce mam algorytm szyfrowania danych zapisywanych do bazy.
@Patryk27
Czy samą dll'ke mogę zabezpieczyć uwzględniając że czas wczytywania biblioteki się wydłuży?
A może orientuje się ktoś jak zabezpieczony jest HashAlgorithm/MD5 lub czy może napisanie dll w innym języku uniemożliwi tak łatwą dekompilację?
możesz użyć obfuscatora, np net reactor (chociaz nie mozna zabezpieczyc tak, zeby sie nie dalo odczytac, ale kod bedzie mniej czytelny)
Najlepiej skompiluj kod do natywnego kodu x86 lub x64 i zabezpiecz wirtualizerem, każde zabezpieczenie dla .NET zweryfikuj czy nie odbezpiecza go narzędzie de4dot
https://github.com/0xd4d/de4dot
http://www.secnews.pl/2011/11/17/narzedzia-do-analizy-aplikacji-net/
Ogólnie jeśli zabezpieczasz 1 komponent - DLL-ke - napisz go w czymś do czego nie ma narzędzi, każdy analizujący będzie miał problem, moja propozycja to środowisko WinDev
Kod kompiluje się do ich VM-ki, nie widziałem narzędzi do dekompilacji bieżących wersji
No to zrób ten algorytm jako aplikacja REST po stronie serwera, a nie kombinuj u klienta.
W dll'ce mam algorytm szyfrowania danych zapisywanych do bazy.
- Tajemnicą powinien być klucz szyfrujący a nie algorytm.
- Jeśli baza jest zdalna, to istnieją gotowe rozwiązania do szyfrowania komunikacji sieciowej.
- Jeśli baza jest lokalna, to dlaczego chcesz ukrywać przed użytkownikiem jego własne dane?