Mam zrzut pamięci (proces niezarządzany). Jak mogę wyodrębnić (używając windbg) jeden z bibliotek dll załadowanych do procesu? Mam na myśli faktycznie zapisanie pliku dll na dyskuJak mogę wyodrębnić plik DLL ze zrzutu pamięci?
Odpowiedz
Możesz użyć sos.dll w katalogu windbg.
Najpierw załadować sos.dll w WinDbg:
.load clr10\sos.dll
następnie wykorzystać sam lub SaveAllModule wyodrębnić moduły dotyczące określonej lokalizacji na dysku:!
!sam c:\notepad
Aby wyodrębnić DLL bez użycia SOS, użyj rozszerzenia .writemem w następujący sposób:
odkryj adresy początkowe i końcowe modułu
lmvm dllname
przykład wyjście ieframe:
start end module name
61370000 61fb8000 ieframe
obliczenia długości = koniec-start:
? 61fb8000 - 61370000
Wydajność:Evaluate expression: 12877823 = 00c48000
następnie zapisać DLL następująco:
.writemem C:\tmp\mydll.dll 61370000 L?00c48000
Jest mało prawdopodobne, aby podać dokładną bibliotekę DLL, ponieważ została ona załadowana z dysku, naprawienie tego nie jest banalne.
(częściowo oparte na this article)
Tak, to prawda. calc.exe będzie również podnosić informacje o interfejsie dla wielu użytkowników i dołączać je do pamięci, podobnie jak wiele programów Windows takich jak mspaint, przeglądarka zdjęć itp.
- 1. Jak analizować wykorzystanie pamięci ze zrzutu pamięci?
- 2. Jak odczytywać klatki ze zrzutu pamięci (bez GDB)?
- 3. Jak uzyskać czas systemowy ze zrzutu pamięci głównej?
- 4. Jak wykonać plik * .dll
- 5. Jak wyodrębnić plik filename.tar.gz
- 6. Znajdź program, który spowodował plik zrzutu pamięci głównej
- 7. analizować plik zrzutu pamięci HPROF z linii poleceń programowo
- 8. Dlaczego generowane są pliki zrzutu pamięci?
- 9. Czy mogę załadować bibliotekę ze strumienia pamięci?
- 10. Jak mogę poznać wersję CLR zrzutu awaryjnego?
- 11. Narzędzia do analizy zrzutu pamięci z Node.js
- 12. Jak mogę wyodrębnić klucz z certyfikatu SSL?
- 13. Freebase: Jaki plik zrzutu danych zawiera "imdb_id"?
- 14. Wiązanie rodzimy dll ze słoika
- 15. Jak wyodrębnić plik jre-9/lib/modules?
- 16. Jak mogę skompresować i zaszyfrować duży plik bez korzystania z zewnętrznych bibliotek DLL lub środowisk wykonawczych?
- 17. Jak faktycznie wyświetlić bitmapę pobraną ze zrzutu sterty Androida?
- 18. utworzyć plik DLL w C#
- 19. Jak mogę wyodrębnić plik z osadzonego zasobu i zapisać go na dysku?
- 20. Konwertuj plik zrzutu PostgreSQL do MySQL?
- 21. Jak utworzyć plik JAR zawierający pliki DLL?
- 22. Jak mogę przeanalizować zrzut sterty w IntelliJ? (przeciek pamięci)
- 23. Jak mogę wyodrębnić listę testcases z TestSuite?
- 24. Jak mogę wyodrębnić skompresowane archiwum w Perlu?
- 25. Jak mogę wyodrębnić wszystkie cytaty z tekstu?
- 26. Jak mogę wyodrębnić obraz konta bieżącego użytkownika?
- 27. Jak przekonwertować aplikację konsoli na plik .dll?
- 28. Jak zarejestrować plik .NET DLL w GAC?
- 29. Jak debugować plik DLL w Delphi
- 30. Jak analizować plik zrzutu awaryjnego przy użyciu GDB
Próbowałem, ale to nie zadziałało. Dołączyłem Windbg do Calc.exe i napisałem exe i dostałem większy plik. Dziwne. – Saar
Przypuszczam, że jest to spowodowane rozbieżnościami w wyrównaniu - pliki pe32 zajmują więcej miejsca w pamięci niż na dysku ze względu na większe wymagania dotyczące wyrównania pamięci. Musisz poprawnie odbudować plik wykonywalny po jego porzuceniu, aby spełnić te reguły. Poza tym sekcja debugowania nie jest zrzucana (ponieważ nie jest zmapowana, jak sądzę). Tabele importu również wymagają rekonstrukcji. – deemok