2013-05-23 27 views
5

bekliyor hangi nesnelerin belirlenmesi, ben tüm güncel iplerZwWaitForMultipleObjects windbg bir kilitlenme bilgi dökümü baktığımızda

> ~2k 
ChildEBP RetAddr 
00d2fcc8 7d4e27dc ntdll_7d600000!ZwWaitForMultipleObjects+0x15 

veya aynısının SingleObject varyasyonları sekteye uğruyor görebilirsiniz. 'Ama don - beklemek nesneye bir kolu olarak

ZwWaitForMultipleObjects geçirilir, ben bunun doğru adresi ile

!do <address> 

bir varyasyonu kullanıyordum hangi nesneden işe yarayabilir farz Doğru adresin nasıl kurulacağını bilir. ChildEBP'den bir miktar sapmaya ihtiyacım var mı?

+2

'! Do' yönetilen nesneler (.NET) içindir, ancak ZwWFMO büyük olasılıkla yerel tanıtıcıları beklemektedir. yığını (umutla WaitForMultipleObjects) ve ilk üç args kadar daha iyi belgelenmiş bir Win32 çerçevesi için '~ 2kb' kullanın. Kulpları almak için ikinci argümünü kaldırmanız gerekecek. Eğer olsun sap değerleri 'kullanın! Belirli bir kolu hakkında bilgi alabilirim f' işlemek. Kulp değerlerini kazma konusunda yardıma ihtiyacınız varsa, çıktıyı ~ 2kb'ye bırakın. –

cevap

11

adımları deneyin:

  1. (bu adım tartışmalı gereksiz ama daha kolay sağ iplik bağlamında çalışmasına bulabilirsiniz)

  2. 2. Konuya içeriğinin geçirileceği "~ 2s" komutunu kullanın
  3. her işlevin ilk üç bağımsız değişken içeren parçacığının çağrı yığınını görüntülemek için "kb" komutunu kullanın. Sen gibi bir şey alacak: bir örnek olarak yukarıdaki çağrı yığını alarak

     
    ChildEBP RetAddr Args to Child 
    0dc7fa30 768b0962 00000004 0dc7fa80 00000001 ntdll!ZwWaitForMultipleObjects+0x15 
    0dc7facc 73c61339 0dc7fa80 0dc7fb14 00000000 KERNELBASE!WaitForMultipleObjectsEx+0x100 
    
  4. , sen ZwWaitForMultipleObjects geçirilen kulpları sayısı 4 (ilk argüman değeri) olduğunu görebilirsiniz. Tutamaç dizisinin adresi ikinci argümandır. Yukarıdaki örnekte adres sap dizisi içeriğini görüntülemek için "dd" komutu kullanımlar 0dc7fa80

  5. olup. "1f0", "1f8" Bu, kolları ilk dört ayrı DWORD olan bir 32-bit süreci olduğu varsayılırsa

     
    0dc7fa80 000001f0 000001f8 0000020c 000001ec 
    0dc7fa90 73a53c1b 00000000 0d462f70 00000001 
    0dc7faa0 0cf7afe0 00000003 0dc7fac8 00000004 
    

    : Yukarıdaki çağrı yığını durumunda, böyle bir şey verecek olan "gg 0dc7fa80" kullanımı , "20c" ve "1ec".

  6. Sen ayrıntılarını görebilirsiniz her gibi pek "idare" WinDbg uzantısı kullanarak işlemek: o varsa (onun sayısı ve adı dahil kolu hakkında daha fazla ayrıntı, görüntüler F 1f0 işlemek F bayrağı! kendisiyle ilişkilendirilmiş bir)

Eğer kolları yönetilen koddan çıkartılıyor şüpheleniyorsanız, o zaman SOS veya PSSCOR yüklemek ve yönetilen çağrı yığını ayrıntılarını görüntülemek için! clrstack komutunu kullanmanız gerekir.

+0

Mükemmel, teşekkürler Aeham (ve yorum için Marc). Bu mükemmel. –

İlgili konular