Aracılığıyla paylaş


TTD Bellek Nesneleri

Açıklama

TTD Bellek beginAddress, endAddress ve dataAccessMask parametrelerini alan ve bellek erişim bilgileri içeren bir bellek nesneleri koleksiyonu döndüren bir yöntemdir.

Parametreler

Mülkiyet Açıklama
başlangıç adresi 0x ile başlayan bellek nesnesinin başlangıç adresi.
bitiş adresi 0x ile başlayan bellek nesnesinin bitiş adresi.
veriErişimMaskesi Çift tırnak içinde yer alan veri erişim maskesi. Bu okuma için r, yazma için w, yürütme için e ve değişiklik için c olabilir.

Children

Nesne Açıklama
EtkinlikTürü Olayın türü. Bu, tüm TTD.Memory nesneleri için "MemoryAccess"tir.
ThreadId İsteği yapan iş parçacığının işletim sistemi iş parçacığı kimliği.
UniqueThreadId İzleme genelinde iş parçacığı için benzersiz bir kimlik. Normal iş parçacığı kimlikleri bir işlemin ömrü boyunca yeniden kullanılabilir, ancak UniqueThreadId'ler kullanılamaz.
TimeStart Bellek erişiminin ne zaman yapıldığını açıklayan bir konum nesnesi .
ZamanSonu Bellek erişiminin ne zaman yapıldığını açıklayan bir konum nesnesi . Bu her zaman TTD.Memory nesneleri için TimeStart ile aynı olacaktır.
Erişim Türü Erişim türü : Okuma, Yazma veya Yürütme.
İnternet Protokolü (IP) Bellek erişimi yapan kodun yönerge işaretçisi.
Adres Bellek() içindeki parametreler arasında [beginAddress, endAddress) aralığında okunan / yazılan / yürütülen Adres. Aralığın yarı açık olduğunu unutmayın. Başka bir ifadeyle, döndürülen olayların hiçbiri endAddress ile eşleşen bir adrese sahip olmayacaktır, ancak endAddress - 1 ile eşleşen olaylar olabilir.
Boyut Bayt cinsinden okuma/yazma/yürütme boyutu. Bu genellikle 8 bayt veya daha az olur. Kod yürütülmesi durumunda, yürütülen yönergedeki bayt sayısıdır.
Değer Okunan, yazılan veya yürütülen değer. Yürütme durumunda yönerge için kod baytlarını içerir. Yönerge baytlarının ayrıştırıcı tarafından MSB sırasına göre listelendiğini ancak LSB sırasına göre değer olarak depolanacağına dikkat edin.

Açıklamalar

TTD'de aşağıdaki erişim türlerine izin verilir. Bellek sorguları:

  • r - okuma
  • w - yaz
  • rw - okuma / yazma
  • e - çalıştır
  • rwe - okuma / yazma / yürütme
  • ec - /change komutunu yürüt

Bunun hesaplamayı çalıştıran bir işlev olduğunu, bu nedenle çalıştırılmasının biraz zaman aldığını unutmayın.

Örnek Kullanım

Bu örnekte, 0x00a4fca0 başlayan dört bayt belleğin okuma erişiminin gerçekleştiği izlemedeki tüm konumların kılavuz görüntüsü gösterilir. Bellek erişiminin her örneğinde detaya gitmek için herhangi bir girdiye tıklayın.

dx -g @$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")

Bellek nesnesi dx çıktı kılavuzu örneğinin ekran görüntüsü.

Kılavuz görüntüsündeki herhangi bir olayda TimeStart alanlarına tıklayarak bu olaya ilişkin bilgileri görüntüleyebilirsiniz.

0:000> dx -r1 @$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")[16].TimeStart
@$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")[16].TimeStart                 : 5D:113 [Time Travel]
    Sequence         : 0x5d
    Steps            : 0x113

Olayın oluştuğu izlemedeki konuma gitmek için [Zaman Yolculuğu] öğesine tıklayın.

0:000> dx @$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")[16].TimeStart.SeekTo()
@$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")[16].TimeStart.SeekTo()
(27b8.3168): Break instruction exception - code 80000003 (first/second chance not available)
Time Travel Position: 5D:113

eax=0000004c ebx=00dd0000 ecx=00a4f89c edx=00a4f85c esi=00a4f89c edi=00b61046
eip=690795e5 esp=00a4f808 ebp=00a4f818 iopl=0         nv up ei pl nz na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000206
690795e5 ffb604040000    push    dword ptr [esi+404h] ds:002b:00a4fca0=00000000

Bu örnekte, izlemedeki 0x1bf7d0 başlayan dört bellek baytının okunduğu/yazıldığı konumların tümü listelenir. Bellek erişiminin her örneğinde detaya gitmek için herhangi bir girdiye tıklayın.

0:000> dx @$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")
@$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")                
    [0x0]           
    [0x1]           
    [0x2]           
    [0x3]           
     ...

Bu örnekte, izlemedeki 0x13a1710'de başlayan dört bellek baytının yürütüldüğü/değiştirildiği konumların tümü listelenir. Herhangi birine tıklayarak bellek erişiminin her oluşumu hakkında ek bilgi edinin.

0:000> dx -r1 @$cursession.TTD.Memory(0x13a1710,0x13a1714, "ec")[0]
@$cursession.TTD.Memory(0x13a1710,0x13a1714, "ec")[0]                
    EventType        : MemoryAccess
    ThreadId         : 0x1278
    UniqueThreadId   : 0x2
    TimeStart        : 5B:4D [Time Travel]
    TimeEnd          : 5B:4D [Time Travel]
    AccessType       : Execute
    IP               : 0x13a1710
    Address          : 0x13a1710
    Size             : 0x1
    Value            : 0x55

Ayrıca Bkz.

Zaman Yolculuğu Hata Giderme - Zaman Yolculuğu Hata Giderme nesnelerine giriş

Zaman Yolculuğu Hata Giderme - Genel Bakış