Zaciemnianie i dekompilacja programów C#

Bartosz Szewczyk

Zaciemnianie i dekompilacja programów C#
18 sierpnia, 2017 Katarzyna Sobczak

Zaciemnianie i dekompilacja programów C#

Zaciemnianie kodu to metody odpowiedzialne za przekształcanie programów komputerowych w taki sposób, aby utrudnić zrozumienie zasad ich działania. Program po zaciemnieniu musi mieć taką samą funkcjonalność.

Dekompilacja to proces przekształcania kodu maszynowego/bajtowego do języka wyższego poziomu.

Aplikacja napisana w języku C# podczas procesu kompilacji jest kompilowana do kodu pośredniego – języka CLI. Common Intermediate Language jest językiem najniższego poziomu dla platformy Microsoft .NET, jest on w pełni zrozumiały dla człowieka. Podczas uruchomienia programu kod CLI jest kompilowany przez maszynę wirtualną bezpośrednio do kodu bajtowego.

Dzięki temu w stosunkowo łatwy sposób można podejrzeć kod źródłowy napisanej aplikacji.

Wymagania

Do zaciemniania i dekompilacji kodu potrzebujemy następujących programów:

  • Visual Studio 2017 Community (pobierz program)
  • Dotfuscator Community Edition – darmowe narzędzie do zaciemniania kodu .NET zintegrowane z Visual Studio.
  • Telerik JustDecompile – darmowe narzędzie do dekompilacji aplikacji pisanych w frameworku .NET (pobierz program)

Dekompilacja kodu

Aby dokonać procesu dekompilacji, należy uruchomić Telerik JustDecompile.
Następnie klikamy na Open -> File(s) i wybieramy plik wykonawczy (rozszerzenie exe) programu napisanego w C# i klikamy Otwórz.

Otrzymujemy podgląd kodu CLI:

Jak widać, kod CLI jest bardzo podobny do kodu C#. Bez trudu możemy podejrzeć jak działa program i zrozumieć logikę biznesową i sposób działania.

Eksport kodu CLI do C#

Jeżeli klikniemy prawym klawiszem myszki na nasz program, możemy stworzyć projekt Visual Studio. Telerik JustDecompile wyeksportuje nasz program i stworzy kod C# na podstawie kodu CLI. Jest to proces odwrotny do kompilacji, czyli dekompilacja.

Po wyeksportowaniu możemy otworzyć projekt przy pomocy Visual Studio. Przekonwertowany kod będzie się trochę różnił od oryginalnego kodu C#, ale cała semantyka zostanie zachowana.

Otworzony projekt można skompilować ponownie, otrzymując plik wykonawczy exe. Oczywiście można edytować kod C# przed kompilacją i wprowadzać zmiany w działaniu programu.

Zaciemnianie kodu

Do zaciemniania kodu będziemy używać Dotfuscator, który jest dostępny dla programistów korzystających z Visual Studio. Aby go uruchomić, należy wpisać w polu Quick Launch w Visual Studio dotfuscator

Po uruchomieniu musimy ustawić w zakładce Properties gdzie ma zapisać się plik po zaciemnieniu. Następnie, w zakładce Inputs dodajemy pliki exe, które chcemy zaciemnić. W dalszej kolejności klikamy Build -> Build Project

Po zaciemnieniu kodu dostajemy prosty raport z zaciemniania naszej aplikacji. Przykładowy raport wygląda następująco:

Build Finished.
Build Statistics Total Renamed Percent Renamed
Types 6 6 100%
Methods 14 3 21,43%
Fields 6 6 100%

Jak widać, wszystkie nazwy metod, klas i zmiennych zostały zmienione na litery np. a, b, c. Przy dużych projektach w znaczący sposób utrudnia to zrozumienie, co w programie dzieje się „pod spodem”. Kod CLI stał się zupełnie nieczytelny i nie da się w łatwy i przystępny sposób przywrócić niezaciemnionego kodu.

Podsumowanie

W artykule opisane zostały podstawy korzystania z Dotfuscator’a i JustDecompile. Nauczyliśmy się:

  • Trochę o kompilacji programów C#
  • Jak dekompilować program napisany w frameworku .Net i wyeksportować projekt Visual Studio
  • Podstaw zaciemniania kodu .Net

Podziel się

Autor: Bartosz Szewczyk

Bartosz Szewczyk

Bartosz Szewczyk

Zespół: Apps

Ostatnie artykuły autora

Rozliczanie przebiegów aut w przedsiębiorstwie w 5 minut

Rozliczanie przebiegów aut w przedsiębiorstwie w 5 minut

Bartosz Szewczyk przedstawia rozwiązanie, które pomaga zarządzać w samochodami w przedsiębiorstwie, zapewniając komfort i szybkość pracy użytkowników.

Synchronizator poczty z Exchange do SharePoint

Synchronizator poczty z Exchange do SharePoint

W artykule przedstawiono rozwiązanie pozwalające na synchronizację wiadomości w czasie rzeczywistym z Exchange do SharePoint w celu dostarczenia użytkownikowi dodatkowych, niedostępnych w programie Outlook możliwości pracy nad załącznikami oraz przyspieszenie dostępu do danych.

Routing w Angular

Routing w Angular

Routing umożliwia nawigowanie między komponentami w aplikacji bez jej przeładowywania. W artykule przestawiam, jak we frameworku Angular4 zaimplementować przykładowy routing.

Zarejestruj się i przetestuj APN Meeting Room

Wypróbuj system rezerwacji sal w praktyce, na Twojej infrastrukturze.
Wersja demonstracyjna umożliwia Ci instalację oprogramowania na 3 urządzeniach.

Chcę otrzymywać treści marketingowe od A.P.N. Promise S.A. drogą elektroniczną
Chcę otrzymywać treści marketingowe od A.P.N. Promise S.A. telefonicznie

Administratorem danych osobowych gromadzonych z wykorzystaniem formularza jest A.P.N. Promise S.A. z siedzibą w Warszawie. Kontakt z osobą odpowiedzialną za ochronę danych osobowych jest możliwy za pośrednictwem adresu e-mail: iodo@promise.pl. Podane dane będą przetwarzane w zakresie niezbędnym do realizacji określonego żądania zgodnie z art. 6 ust. 1 lit. b RODO, w zakresie niezbędnym dla prawidłowej realizacji żądania oraz oferowania i świadczenia usług, marketingu produktów i usług własnych oraz przeprowadzenia ankiet i oceny satysfakcji zgodnie z art. 6 ust. 1 lit. f RODO przez okres niezbędny dla realizacji celów oraz w przypadku wyrażenia zgody na podstawie art. 6 ust. 1 lit. a RODO w celu dostarczenia treści marketingowych środkami komunikacji elektronicznej lub za pomocą urządzeń telefonicznych.

Przysługuje Ci prawo do żądania dostępu do danych osobowych, ich sprostowania, usunięcia lub ograniczenia przetwarzania, jak również prawo sprzeciwu wobec przetwarzania, prawo do przenoszenia danych, a także prawo złożenia skargi do organu nadzorczego, którym w Polsce jest Prezes Urzędu Ochrony Danych Osobowych. Podanie danych jest dobrowolne, jednak niezbędne dla realizacji powyżej wskazanych celów. Odbiorcami danych mogą być podmioty lub osoby obsługujące administratora w zakresie w zakresie hostingu, komunikatorów internetowych, usług IT, księgowości, archiwizacji. Więcej informacji w Polityce Prywatności oraz Regulaminie.

Register and test the APN Meeting Room booking system.

Registering and installing the trial version you are allowed to install the software on 3 devices.

I want to receive marketing content from A.P.N. Promise S.A. electronically
I want to receive marketing content from A.P.N. Promise S.A. by phone

The data controller of personal data collected using the form is A.P.N. Promise S.A. with its registered office in Warsaw. Contact with the person responsible for the personal data protection is possible via following e-mail address: iodo@promise.pl. The given data shall be processed to the extent necessary to carry out specified request in accordance with art. 6(1)(b) of GDPR and to the extent necessary for the correct realization of the request and offer and provision of services, own product and services marketing and conducting surveys and satisfaction ratings in accordance with art. 6(1)(f) of GDPR for the period necessary to achieve the purposes and in the event of consent in accordance with art. 6(1)(a) of the GDPR to provide marketing content by electronic means or by telephone devices.

You have the right to request access to your personal data, rectification, deletion or limitation of processing, as well as the right to object to processing, the right to transfer data and the right to lodge a complaint with a supervisory authority, i.e. the President of the Personal Data Protection Office in Poland. Providing data is voluntary but necessary for the realization of the above-mentioned purposes. Recipients of data may be entities or persons servicing the data controller in the field of hosting, instant messengers, IT services, accounting, archiving. More information in the Privacy Policy and Regulations.

Cybersecurity w obszarze zarządzania zasobami oprogramowania

Napisz do nas, a skontaktujemy się z Tobą i bezpłatnie porozmawiamy o Twoim poziomie cyberbezpieczeństwa w obszarze SAM.

 

Administratorem danych gromadzonych z wykorzystaniem formularza jest A.P.N. Promise S.A. Podane przez Ciebie dane będą przetwarzane w zakresie niezbędnym do podjęcia kontaktu lub realizacji określonego żądania zgodnie z art. 6 ust. 1 lit. b RODO przez okres niezbędny dla realizacji Twojego zgłoszenia. Wszelkie informacje w zakresie przetwarzania podanych przez Ciebie w formularzu danych oraz posiadanych uprawnieniach znajdziesz w Polityce prywatności. Kliknij i dowiedz się więcej jeżeli informacje podane powyżej nie są dostatecznie jasne!

Zostaw adres mailowy i nie przegap kolejnego szkolenia!

[contact-form-7 404 "Not Found"]