dnSpy: debugowanie, dekompilacja i hakowanie .NET-a

tech • 357 słów • 2 minuty czytania

Każdy ma swoje ulubione zabawki. Przy natywnych kodach jest to gdb, windbg, czy choćby VS-owy debugger, a w ostateczności IDA (przy dłuższym posiedzeniu z RE). Choć od dłuższego czasu rzadko używam tych commandline-owych, co zmusza mnie zawsze do przypominania sobie komend i poleceń. To jednak w przypadku C# i ogólnie .NET-a, sprawa wygląda trochę gorzej.

Debugowanie dot-net-owych binarek w VS-u bez dostępu źródeł i symboli, jeszcze przy wykorzystaniu natywnych obrazów, co prawda nie jest straszne, w końcu leci już wszystko po zjitowanym natywnym kodzie, ale jednak nieco upierdliwe, szczególnie gdy chcę coś szybko ogarnąć. Przy IDA znów totalnie odrzuca mnie ten .NET-owy bytecode.

Może nie jestem jakimś wielkim fanem tej technologii i nie darzę miłością używane tam języki, ale gdy trzeba coś zrobić to się siada i robi, z tym nie ma większego problemu. Ostatnio w robocie miałem problem z jakąś większą .NET-wą aplikacją i aby znów za bardzo nie cierpieć poradziłem się bardziej doświadczonego kolegi “dotnetowca” (pozdro Sebastian!). Otrzymałem odpowiedz, że jak debugować i grzebać w cudzych programach dot-netowych to tylko za pomocą dnSpy.

dnSpy w działaniu /źródło: strona projektu/

Jest to niezwykłe narzędzie - rozbudowany i pełnoprawny debugger, “assembler” i dekompilator kodu .NET-a. Przy debugowaniu nie są potrzebne żadne źródła, bo dzięki korzystaniu z ILSpy program sam w locie z załadowanych w pamięci procesu assembly odtworzy kod źródłowy. A jakby tego było mało, to taki kod można zmodyfikować i ponownie skompilować w locie do kodu IL przy użyciu kompilatora Roslyn.

Powyżej zrzut ze strony projektu prezentujący dnSpy w działaniu. Od tej chwili debugowanie dowolnego kodu dot-net-owych aplikacji i modułów staje się przyjemnością. Podobnie jak inżyniera wsteczna, analiza działania, wyłapywanie błędów, czy inne zabawy i eksperymenty związane z kodem w tej technologii. Chyba już nigdy nie będę musiał użyć IDA-y do tego celu ;)

Nieczęsto tutaj wychwalam czy w ogóle prezentuję jakieś programy, ale to narzędzie wywarło na mnie duże wrażenie. Być może podobne do tego jakie doznałem z 13 lat temu, gdy odkryłem IDA. A co najlepsze zmieniło moje podejście do dotychczasowej udręki jaką doświadczałem przy pracach z zamkniętymi kodami napisanymi w .NET.

Chwała autorowi (0xd4d) za to niezwykłe open-sourcowe narzędzie. Mówię to ja, zawodowy C-plus-plus-owiec lubiący wysoko- i nisko-poziomowy kod!

Komentarze (0)

Dodaj komentarz

/dozwolony markdown/

/nie zostanie opublikowany/