Zine.net online

Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc
w Szukaj

mgrzeg.net - Admin on Rails :)

Automatyczna analiza zrzutów pamięci

Ostatnio przyszło mi nieco więcej niż zwykle bawić się zrzutami pamięci różnych procesów, generowanych przez procdumpa, tudzież myszkowo z Process Explorera lub Process Hackera. Czasem po prostu wygodniej jest zrobić zrzut i potem bawić się takim 'zamrożonym procesem' na spokojnie, w innym miejscu i o innym czasie. Szczególnie, gdy bawimy się w analizę jakiegoś ciekawego malware'u (;)) i po prostu maszyna wirtualna nie jest najlepszym miejscem do zabawy debuggerem, a pliki .dmp zarażonych procesów można bez żadnych awantur ze strony programów AV przemycać na inne maszyny i tam się im bliżej przyglądać (w sumie jakby się tak zastanowić, to wygląda to na małą dziurkę w programach AV ;)).

Oczywiście WinDbg rządzi i nic tego nie zmieni. Wszystkie drogi prowadzą w końcu do niego, ale czasem można sobie nieco pomóc - a to skrypcik, a to jakiś tólek wysmarować...

Z takiej oto przyczyny oraz czystej chęci zabawy i fascynacji Process Hackerem postanowiłem 'sklonować' część okien i funkcjonalności Process Hackera związanych z właściwościami żywego procesu i w ten oto sposób zrodził się w mojej główce Dump Hacker - czyli automatyczny analizator procesów-denatów. Rzecz jasna nie wszystko jestem w stanie przenieść 1:1 (w końcu to jest zrzut pamięci procesu w trybie użytkownika, więc np. stos wywołań kończy mi się zazwyczaj na ntdll - tuż przed przejściem w tryb jądra, a PH poprzez sterownik ma pełen dostęp do tego, co się dzieje w kernelu), jednak wiele mogę, a także dużo mogę dodać od siebie (jak chociażby rozbudowaną analizę aplikacji .NET).

Zamiast pisać, wrzucam poniżej kilka screenshotów z 'analizy' dumpa poczciwego notatnika.

Rys 1. Ogólne właściwości procesu.

Rys 2. Lista załadowanych modułów

Rys 3. Lista otwartych uchwytów

Rys 4. Lista wątków + call stack dla jednego z nich
(w przypadku notepada wszystkiego jest tylko 1 wątek)

Rys 5. Pamięć procesu

Obecnie siedzę przy: '.NET Tab' (choć to ma niziutki priorytecik), przeszukiwaniu pamięci, analizy modułów na wypadek hooków, zapisywaniu do pliku wybranych obszarów pamięci... żeby wymienić tylko kilka. Jak macie jakiś pomysł na ciekawy ficzer, to chętnie wysłucham :)

Myślałem również w przyszłości nad podobną zabawką na potrzeby 'full memory dump' systemu, czyli czegoś do wydłubywania informacji o stanie systemu w momencie padu.

Na koniec nieco gorsza wiadomość - na razie nie planuję udostępnienia szerzej tej aplikacji. Być może w przyszłości, jak osiągnie jakiś tam poziom przyzwoitości i przestanie być na etapie 'a może dodam jeszcze to i wywalę to, a w ogóle to zrobię to zupełnie inaczej', ale póki co nie ma to większego sensu. Ot - po prostu taka zabawka.

Opublikowane 29 marca 2012 01:53 przez mgrzeg

Powiadamianie o komentarzach

Jeżeli chciałbyś otrzymywać email gdy ta wypowiedź zostanie zaktualizowana, to zarejestruj się tutaj

Subskrybuj komentarze za pomocą RSS

Komentarze:

 

dotnetomaniak.pl said:

Thank you for submitting this cool story - Trackback from dotnetomaniak.pl

marca 29, 2012 06:11
 

Paweł said:

Super sprawa Michał!

marca 31, 2012 14:54

Co o tym myślisz?

(wymagane) 
(opcjonalne)
(wymagane) 

  
Wprowadź kod: (wymagane)
Wyślij

Subskrypcje

W oparciu o Community Server (Personal Edition), Telligent Systems