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.
Zabezpieczenie przed dekompilacją kodu
- Rejestracja: dni
- Ostatnio: dni
- Postów: 597
Dekompilacja kodu w C# - http://www.red-gate.com/products/dotnet-development/reflector/
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 13042
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
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ę?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 308
możesz użyć obfuscatora, np net reactor (chociaz nie mozna zabezpieczyc tak, zeby sie nie dalo odczytac, ale kod bedzie mniej czytelny)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 439
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
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 13042
No to zrób ten algorytm jako aplikacja REST po stronie serwera, a nie kombinuj u klienta.
- Rejestracja: dni
- Ostatnio: dni
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?