Zaciemnianie aplikacji utworzonych za pomocą dotfuscatora (wersja Visaul Studio 2022)

Strona zaktualizowana :
Data utworzenia strony :

streszczenie

Aplikacje oparte na serii frameworków .NET są tworzone w tak zwanym wspólnym języku pośrednim, dzięki czemu można je odczytać w formie zbliżonej do oryginalnego kodu źródłowego za pomocą narzędzi do demontażu i tym podobnych. W tej sekcji opisano sposób zaciemniania klas i nazw metod do łatwo nieczytelnych formatów przy użyciu bezpłatnej wersji Dotfuscator, narzędzia zaciemniającego dostarczanego z programem Visual Studio.

Jest opisany za pomocą Visual Studio 2022, ale może być również używany w innych wersjach Dotfuscator.

Środowisko pracy

Visual Studio
  • Program Visual Studio 2022

O obiekcie Dotfuscator

Dotfuscator to narzędzie zaciemniające, które utrudnia odczytanie kodu źródłowego po zdezasemblowaniu dla aplikacji napisanych przy użyciu rodziny frameworków .NET (zwanej dalej .NET). Dotfuscator jest dostarczany z Visual Studio za darmo i za opłatą.

Bezpłatna wersja nie jest dostępna, chyba że wiele jej funkcji jest ograniczonych lub program Visual Studio jest uruchomiony, ale każdy może z niego korzystać, o ile ma zainstalowany program Visual Studio. Płatna wersja ma wiele potężnych funkcji zaciemniania, których nie ma w wersji bezpłatnej, ale jest oferowana w cenie, na którą trudno sobie pozwolić ogółowi społeczeństwa.

Dotfuscator ma różne funkcje, ceny i edycje w zależności od wersji, więc zapoznaj się z poniższą stroną główną, aby uzyskać szczegółowe informacje.

Informacje o demontażu

Wspomniałem wcześniej, że aplikacje napisane w .NET mogą łatwo zdezasemblować i odczytać oryginalny kod źródłowy, ale w rzeczywistości dzieje się tak, że jeśli zdezasemblujesz plik .exe (lub plik .dll), jak pokazano na poniższym rysunku, możesz prawie odtworzyć oryginalny kod źródłowy, taki jak przestrzeń nazw, nazwa klasy, nazwa metody itp.

Rodzaje programów, które powinny być zaciemnione

Dotyczy to głównie programów, które są dystrybuowane i uruchamiane dla nieokreślonych użytkowników. Na przykład aplikacje komputerowe. I odwrotnie, aplikacje sieci Web, które mają trudności z bezpośrednim dostępem do plików programów, są mniej ważne dla zaciemniania.

Tym razem przyglądamy się projektowi w WPF, aplikacji desktopowej.

Instalowanie Dotfuscatora

Ta aplikacja jest dostarczana z programem Visual Studio 2022, ale nie jest dołączona do standardowej instalacji (w niektórych przeszłości Visual Studios może być instalowana od zera).

Aby dodać Dotfuscator: Uruchom Visaul Studio i wybierz Pobierz narzędzia i funkcje z Narzędzia.

Wybierz "Poszczególne komponenty" z powyższej zakładki, zaznacz "Ochrona prewencyjna - Dotfuscator" w grupie "Narzędzia kodu" i kliknij przycisk Zainstaluj w prawym dolnym rogu. W tym celu zamknij konsolę programu Visual Studio.When doing so, close the Visual Studio console.

Procedura zaciemniania

Opisuje kroki, które mają na celu pomylenie i zaciemnienie tych nazw.

Utwórz aplikację w programie Visual Studio, skompiluj plik .exe, a następnie kliknij przycisk . Utwórz plik dll. Do tej pory jest to to samo, co tworzenie zwykłej aplikacji. Utworzona aplikacja powinna być przeznaczona dla osób utworzonych w kompilacji release. (Ponieważ zazwyczaj nie publikujesz w Debug).

Po utworzeniu .exe lub .dll wybierz pozycję Narzędzia z menu programu Visual Studio, a następnie wybierz pozycję Ochrona prewencyjna — społeczność Dotfuscator.

Ekran rejestracji jest wyświetlany, ale nie jest wymagany, więc jeśli jest niepotrzebny, kliknij przycisk anuluj tak, jak jest.

Pozostań i kliknij przycisk OK.

Uruchamia się Dotfuscator. Aplikacja działa samodzielnie, dzięki czemu można zaciemnić pliki, które nie są istotne dla aktualnie otwartego projektu. (W przypadku darmowej wersji samej aplikacji zakłada się, że visual studio jest uruchomione.) )

W tym artykule zaciemnię projekt aplikacji .NET 6.0 WPF zbudowany z wartościami domyślnymi jako przykład.

Wybierz "Wejście" z listy po lewej stronie i kliknij przycisk "+".

Wybierz plik programu, który chcesz zaciemnić. Aplikacje napisane w programie .NET Framework często zaciemniają .exe, ale w programach .NET i .NET Core programy są często .dll jednostkami. NET Aplikacje WPF będą również miały .dll encje, więc wybierz .dll.

Zostanie on dodany do listy. Jeśli składa się z wielu bibliotek DLL, dodaj więcej niż jedną.

Po dodaniu pliku docelowego kliknij przycisk "Buduj" na pasku narzędzi.

Zostaniesz zapytany, gdzie zapisać zaciemniony plik projektu, więc określ go. Lokalizacja może być dowolna, ale może być również lokalizacją wyjściową zaciemnionego programu. Zapisuje dane wejściowe i otworzy ten plik projektu zaciemniania, jeśli chcesz go ponownie zaciemnić. Rozszerzenie to ". xml".

Jeśli kompilacja została rozpoczęta, a "Kompilacja ukończona" jest wyświetlana w poniższym komunikacie, oznacza to pomyślne ukończenie. Na ekranie zostanie wyświetlony dziennik kompilacji oraz lista zaciemnionych klas i zmiennych.

Wybierz "Wynik" z listy po lewej stronie, aby zobaczyć szczegóły zmiany nazw klas i metod.

Nazwy klas i nazwy metod w drzewie po prawej stronie, takie jak "->", są nazwami po zaciemnieniu. Zmieniając nazwę klasy lub nazwę metody na tak bezsensowną nazwę, jak ta, możesz utrudnić odczytanie zawartości kodu źródłowego, nawet jeśli zostanie zdemontowany.

Zaciemnione programy są zapisywane w folderze o nazwie "Dotfuscated" w miejscu, w którym zapisałeś plik projektu.

Mapa.xml jest plikiem wyników zaciemniania, dzięki czemu można go bezpiecznie usunąć.

Ponieważ .NET 6.0 WPF nie może być uruchomiony przez samą bibliotekę DLL, skopiuj "XXXX.exe" i "XXXX.runtimeconfig.json" wygenerowane w momencie kompilacji do tego samego folderu i uruchom go. Jeśli możesz zacząć normalnie, na razie nie ma problemu. Jeśli nie możesz go uruchomić, być może brakuje plików lub tworzysz program, który staje się niespójny z powodu zaciemniania.

Jeśli przeanalizujesz program, który faktycznie został zaciemniony, zobaczysz pewne ślady zaciemnienia. Pierwszy arkusz poniższego rysunku jest przed zaciemnieniem, a drugi po zaciemnieniu.

Należy zauważyć, że nazwy klas zdefiniowane w bibliotekach .NET nie podlegają zmianie nazwy, ponieważ istnieją jako struktura.

Tym razem zaciemniłem domyślny projekt utworzony tak, jak jest, więc myślę, że istnieje obraz, który prawie nie jest zaciemniony, ale myślę, że efekt zaciemnienia staje się jasny, ponieważ im większy projekt, tym bardziej unikalne klasy wzrosną.

Ponadto, chociaż tym razem włączyliśmy procedurę do darmowej wersji, płatna wersja pozwala na bardziej złożone zaciemnianie, a także zapobiega samemu demontażowi. Jednak zaciemnianie ma różne niekorzystne skutki i może wystąpić, więc podczas wykonywania zaciemniania konieczne jest wykonanie go, rozważając, czy będzie działać prawidłowo od początku projektowania.

Wyklucz zaciemnianie

Jeśli masz nazwy klas lub właściwości, których nie chcesz zaciemniać, możesz je wykluczyć.

Podczas ładowania zespołu wybierz Zmień nazwę > Wyklucz z lewej strony ekranu. Ponieważ zawartość zestawu jest wyświetlana, sprawdzę te, których nie chcę zaciemniać.

Możliwe jest wykluczenie zaciemniania na poziomie szczegółowym, ale myślę, że łatwiej jest dostosować je na podstawie przestrzeni nazw.

Tryb biblioteki

Po wybraniu zestawu wejściowego widać, że "Tryb biblioteki" jest zaznaczony.

"Tryb biblioteki" polega na dołączaniu do bibliotek DLL, które mogą być wywoływane przez inne programy. Jeśli ta opcja jest zaznaczona, publiczne klasy i właściwości wywoływane przez inne programy są wyłączone z zaciemniania.

Jednak ogólnie rzecz biorąc, rzadko zdarza się ujawniać bibliotekę, która jest wywoływana generatywnie z innych programów i myślę, że często jest ona zaciemniana do aplikacji, które działają samodzielnie, więc w zasadzie można usunąć ten test.

Zaciemnianie .exe jednoplikowych (niepotwierdzone)

Badania dotyczące tego elementu w programie Visual Studio 2022 są obecnie niepotwierdzone.

Prawdopodobnie będzie to zaciemnienie z MSBuild, ale zawieszam go z powodu braku informacji w tej chwili.