2013-02-09 15 views
6

Jak mogę obejrzeć konkretny proces, aby dowiedzieć się, jakie zasoby używa w czasie wykonywania (takie jak dźwięki, obrazki, kursory i klucze rejestru)?Oglądaj zasoby używane przez exe dll

Muszę to zrobić programowo przy użyciu C# (np. Przy użyciu interfejsu API systemu Windows lub biblioteki innej firmy).

Każda pomoc jest doceniana. Dzięki.

+0

Czy idea debuggera - pomoc jest dobra? (np. oglądanie połączeń z funkcjami Win API, takimi jak 'LoadCursor')? Program \ dll może nawet zaszyfrowany i nie debuggujący. –

+0

Myślę, że zależy to również od środowiska: natywnego lub zarządzanego. –

+0

Czy próbowałeś Monitora procesu z SysInternals? –

Odpowiedz

3

Trzymałbym się liczników wydajności. Są to te, dla

  • Pamięci
  • GDI Uchwyty (bitmapy, czcionki, ...)
  • Uchwyty (File, Klucz rejestru zdarzeń, Mutex, Gniazdo, proces, ...)
  • Windows (Obiekty użytkownika)

Dokładny typ nie może zostać określony za pomocą liczników wydajności, ale może dać wskazówkę, jeśli coś wycieknie. Jeśli chcesz wiedzieć, które uchwyty możesz użyć uchwytów z SysInternals, które dadzą ci niezły wynik procesu, który możesz przeanalizować.

Jeśli chcesz naprawić wycieki uchwytu, musisz użyć debuggera (Windbbg) i użyć rozszerzenia obsługi !, aby rozpocząć śledzenie wszystkich zestawów wywołań dla każdego uchwytu, abyś mógł uzyskać później statystyki, które obsługują, zostały przydzielone, ale jeszcze nie zostały uwolnione.

Twoje pytanie jest trochę zbyt obszerne, ponieważ dokładna taktyka, by uchwycić wyciek zasobów, zależy od rodzaju wycieku. EasyHook to dobre rozwiązanie do śledzenia wszystkich wywołań zasobów/zwolnień zasobów i nagrywania ich automatycznie.

Jeśli chcesz zautomatyzować debuger za pomocą np. C# można użyć http://wmemoryprofiler.codeplex.com/, który jest w zasadzie zarządzanym opakowaniem wokół Windbg, który pozwala nawet na samodzielne debugowanie aplikacji.

Kiedy chcesz poznać zasady, jak zdobyć rozproszone dane dla różnych zasobów, powinieneś przeczytać kod procesu Hacker.

Powiązane problemy