Zaciemnianie aplikacji Silverlight za pomocą narzędzia Dotfuscator
O firmie Dotfuscator
Dotfuscator to zaciemniacz, który utrudnia odczytanie kodu źródłowego, gdy aplikacje napisane za pomocą .NET Framework są dezasemblowane. Dotfuscator jest dostępny zarówno w wersji bezpłatnej, jak i płatnej, która jest dostarczana z programem Visual Studio.
Bezpłatna wersja jest dostępna tylko z wieloma ograniczonymi funkcjami i założeniem, że program Visual Studio jest uruchomiony, ale każdy z zainstalowanym programem Visual Studio może z niego korzystać. Wersja płatna ma wiele potężnych funkcji zaciemniania, które nie są dostępne w wersji darmowej, ale może być denerwujące, że jest oferowana po cenie, na którą trudno sobie pozwolić ogółowi społeczeństwa.
Dotfuscator może mieć różne funkcje, ceny i wersje w zależności od wersji, więc szczegółowe informacje można znaleźć na następującej stronie internetowej.
Przeanalizowany kod
Jak wspomniano powyżej, aplikacje utworzone za pomocą .NET Framework mogą łatwo odczytać oryginalny kod źródłowy przez deasemblację, ale w rzeczywistości dzieje się tak, że po zdezasemblowaniu pliku zestawu, jak pokazano na rysunku, większość oryginalnego kodu źródłowego, takiego jak przestrzenie nazw, nazwy klas i nazwy metod, może zostać odtworzona.
Procedura zaciemniania
Zacznij od utworzenia aplikacji Silverlight jak zwykle i wykonania kompilacji wydania. Tutaj tworzymy aplikację, która umieszcza tylko dwa przyciski.
W folderze Bin\Release folderu, w którym znajduje się projekt, wpisz . xap" to plik pakietu, który podsumowuje programy i pliki używane w aplikacjach Silverlight.
W rzeczywistości ten plik jest skompresowany i skompilowany jako plik ZIP, więc rozszerzenie to ". zamek błyskawiczny".
Został zmieniony na plik ZIP.
Po otwarciu plik zawiera plik manifestu i bibliotekę DLL. Ta biblioteka DLL jest skompilowaną wersją programu, który działa jako aplikacja.
Nawiasem mówiąc, plik DLL jest również umieszczany w folderze Release podczas jego budowania, więc tym razem zaciemnimy ten plik.
W menu Visual Studio wybierz pozycję Narzędzia, a następnie wybierz pozycję PreEmptive Dotfuscator And Analytics.From the Visual Studio menu, select Tools, and then select PreEmptive Dotfuscator And Analytics.
Przy pierwszym uruchomieniu zostanie wyświetlone okno dialogowe "Umowa licencyjna", więc przeczytaj uważnie zawartość, zaznacz "Tak, akceptuję umowę licencyjną" i kliknij przycisk "OK".
Rozpoczyna się PreEmptive Dotfuscator And Analytics CE.
Wybierz "Wejścia" z drzewa po lewej stronie i kliknij przycisk "Dodaj wejście".
Wybierz plik DLL wygenerowany podczas kompilacji.
Wybierz dodany plik DLL i usuń zaznaczenie opcji Tryb biblioteki > Konwersja XAML.
Jeśli "Tryb biblioteki" jest zaznaczony, klasy i metody zdefiniowane publicznie nie zostaną zaciemnione.
Jeśli opcja "Konwersja XAML" jest zaznaczona, klasy zdefiniowane w XAML zostaną zaciemnione, ale w zależności od sposobu ich utworzenia spowoduje to błąd uruchamiania, więc jeśli wystąpi, usuń jego zaznaczenie.
Zasadniczo wszystkie klasy, metody, właściwości i nazwy zmiennych są zaciemnione, ale jeśli nie chcesz zaciemniać określonej przestrzeni nazw lub klasy z powodu serializacji, wybierz "Zmień nazwę" z drzewa po lewej stronie, wybierz kartę "Wyklucz" i sprawdź docelową przestrzeń nazw lub klasę.
W obszarze Reguły wbudowane upewnij się, że jest zaznaczona opcja Pola dla formantów użytkownika programu Silverlight i WPF. Zaznaczenie tej opcji spowoduje, że pole UserControls zostanie zaciemnione i będzie działać pomyślnie. Możesz go odznaczyć, jeśli wydaje się, że działa poprawnie nawet po zaciemnieniu.
Po zakończeniu kliknij przycisk "Zbuduj projekt" na pasku narzędzi.
Jeśli w projekcie nastąpią zmiany, zostanie wyświetlone okno dialogowe potwierdzenia zapisu projektu, więc kliknij "Tak", aby zapisać.
Projekt nosi nazwę ". XML". Zaciemnione pliki są zapisywane w tej samej lokalizacji.
Poczekaj na zakończenie kompilacji podczas jej uruchamiania. Zauważ, że im większy program, tym dłużej trwa budowanie. Gdy wygląda jak rysunek, kompilacja jest kompletna.
Pole komunikatu pokazuje postęp kompilacji i krótki wynik, taki jak stopień zaciemnienia.
Jeśli wybierzesz Results z drzewa po lewej stronie, zobaczysz szczegółowe informacje o zmianie nazw klas i metod.
Pod nazwami klas i metod będzie ikona Dotfuscator oraz nazwy takie jak "a" i "b", które będą zaciemnioną nazwą. Zmieniając w ten sposób nazwę klasy lub metody na bezsensowną, nawet jeśli zostanie zdezasemblowana, może to utrudnić odczytanie zawartości kodu źródłowego.
Zaciemniony plik jest tworzony w folderze o nazwie "Dotfuscated" w folderze pliku .xml zapisanego w Save Project. Oprócz zaciemnionego pliku utworzono plik "Map.xml", ale jest to wynik zaciemnienia i nie jest używany.
Jeśli zdemontujesz zaciemniony plik, zobaczysz, że niektóre nazwy klas i metod zostały zmienione na "a" lub "b".
Tym razem domyślny utworzony projekt został zaciemniony prawie tak, jak był, więc myślę, że jest obraz, że nie jest tak zaciemniony, ale myślę, że efekt zaciemnienia staje się wyraźniejszy, ponieważ liczba klas itp. rośnie wraz z rozwojem projektu.
Na marginesie, . NET Framework i nie podlegają zmianie nazwy, ponieważ są to zestawy, które są już zainstalowane na przykład w systemie Windows.
Program Silverlight nie używa bibliotek DLL w stanie takim, w jakim jest, więc są one pakowane jako pliki XAP. Jak wspomniano na początku, plik XAP jest tylko zmianą w rozszerzeniu pliku ZIP, więc tworzy plik ZIP, zbierając pliki zawarte w pliku XAP i zaciemnionych bibliotekach DLL.
Tworzenie pliku ZIP można wykonać przy użyciu standardowych funkcji systemu operacyjnego.
Zostanie utworzony plik ZIP.
Rozszerzenie zostanie zmienione na '. xap", a jeśli nazwa pliku jest inna, zmień ją na oryginalną nazwę pliku pakietu.
Umieść plik XAP w lokalizacji dystrybucji.
Sprawdź działanie i sprawdź, czy działa poprawnie.
Jeśli się nie uruchomi, sprawdź, aż działa normalnie, zmniejszając zaciemniony kod. Należy pamiętać, że program Silverlight często utknął w sprawach związanych z językiem XAML.
Chociaż instrukcje nie są tutaj wymienione, jeśli chcesz podpisać program, skompiluj go w stanie podpisanego z opóźnieniem, zaciemnij zestaw, a następnie podpisz ponownie. Nawet jeśli zaciemnisz go podczas podpisywania, kod podpisu dołączony w momencie kompilacji i kod podpisu po zaciemnieniu nie będą zgodne, więc nie będziesz mógł go uruchomić.
W tym artykule wymieniłem kroki dla bezpłatnej wersji, ale jeśli korzystasz z wersji płatnej, możesz wykonać bardziej złożone zaciemnianie i zapobiec samemu demontażowi. Jednak zaciemnianie może powodować różne negatywne skutki, więc podczas zaciemniania należy rozważyć, czy będzie działać prawidłowo od początku projektowania.