Dekompilacja przy pomocy dotPeek

Narzędzie, o którym będzie mowa w tym poście nie jest może aplikacją pierwszej potrzeby, zwłaszcza w kontekście szybszego pisania kodu, ale zachęcony inicjatywą Maćka postanowiłem opisać dekompilator, którego osobiście używam. Choć nie jest on przeze mnie zbyt często wykorzystywany, to jednak od czasu do czasu bywa niezwykle pomocny, znacząco ułatwiając i przyspieszając pracę nad problemem, przez co w pewnym sensie jednak wpisuje się w tematykę bloga 😉 .

Czym jest dekompilacja?

Na początek trochę teorii. Czym właściwie jest dekompilacja? Najprościej mówiąc jest to odtworzenie kodu źródłowego programu (w tym przypadku w języku C#) na podstawie plików wynikowych, takich jak biblioteki *.dll czy pliki wykonywalne *.exe. Warto podkreślić, że zdekompilowany kod nie musi być w stu procentach taki sam jak oryginalny kod źródłowy, jednak jego działanie będzie identyczne.

dotPeek

Narzędzi do dekompilacji kodu w .NET jest wiele, zarówno darmowych jak i tych płatnych. Ja używam akurat dotPeek, bo jest darmowy i jak do tej pory znalazłem w nim wszystkie funkcjonalności, których potrzebowałem. Używam go przede wszystkim do pracy z zewnętrznymi bibliotekami, kiedy coś nie działa do końca zgodnie z moimi oczekiwaniami i muszę zagłębić się w implementację np. jakiejś metody z zewnętrznego API, aby dowiedzieć się dlaczego tak się dzieje. dotPeek pozwala nie tylko podglądać zewnętrzny kod, ale także go debugować, co jest na prawdę świetną sprawą.

Używanie aplikacji jest niezwykle proste. Wystarczy przeciągnąć plik, który chcemy zdekompilować do okna aplikacji i od razu otrzymujemy kod źródłowy, po którym możemy się bez przeszkód poruszać, gdyż dotPeek ma wiele funkcjonalności zaczerpniętych z ReSharpera. Mamy także możliwość wyeksportowania całości do nowego projektu, który możemy otworzyć później w Visual Studio.

export

export2

 

Jak już wcześniej wspominałem dotPeak pozwala nie tylko „oglądać” kod, ale także umożliwia jego debugowanie poprzez generowanie plików *.pdb, dla zdekompilowanych assemblies. Udostępniane są one na lokalnym serwerze symboli. Wystarczy je tylko podpiąć do Visual Studio, aby były brane pod uwagę podczas debugowania.

Aby to zrobić wchodzimy w dotPeek -> Tool -> Options i zakładka Symbol Server. Zaznaczamy opcje generowania plików .pdb dla aktualnie otwartych assemblies i kopiujemy sobie adres serwera, który wykorzystamy konfigurując VS.

options

 

Następnie uruchamiamy serwer symboli dotPeek -> Tools -> Symbol Server.

start-symbol-server

 

Zostało tylko dodać serwer z symbolami do konfiguracji VS: Tools -> Options -> Debugging -> Symbols i dodajemy Symbol file locations podając wcześniej skopiowany adres z dotPeek’a.

symbols-vs

 

To oczywiście nie koniec możliwości tego narzędzia, ale moim zdaniem są to najbardziej przydatne funkcjonalności, z których sam miałem okazję korzystać.  A jakie Wy dekompilatory polecacie i dlaczego? Zapraszam do podzielenia się opinią w komentarzach 😉

2 przemyślenia nt. „Dekompilacja przy pomocy dotPeek

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *