Objetos de memória TTD
Descrição
TTD Memory é um método que usa os parâmetros beginAddress, endAddress e dataAccessMask e retorna uma coleção de objetos de memória que contêm informações de acesso à memória.
Parâmetros
Propriedade | Descrição |
---|---|
beginAddress | O endereço inicial do objeto de memória precedido por 0x. |
endAddress | O endereço final do objeto de memória precedido por 0x. |
dataAccessMask | A máscara de acesso a dados contida entre aspas duplas. Pode ser r de read (leitura), w de write (gravação), e de execução e c de change (alteração). |
Filhos
Objeto | Descrição |
---|---|
EventType | O tipo do evento. Este é "MemoryAccess" para todos os objetos TTD.Memory. |
ThreadId | A ID do thread do sistema operacional do thread que fez a solicitação. |
UniqueThreadId | Uma ID exclusiva para o thread no rastreamento. As IDs de thread regulares podem ser reutilizadas durante o tempo de vida de um processo, mas UniqueThreadIds, não. |
TimeStart | Um objeto de posição que descreve a posição quando o acesso à memória ocorreu. |
TimeEnd | Um objeto de posição que descreve a posição quando o acesso à memória ocorreu. Sempre será o mesmo que o TimeStart para objetos TTD.Memory. |
AccessType | O tipo de acesso - Leitura, Gravação ou Execução. |
IP | O ponteiro de instrução do código que fez o acesso à memória. |
Address | O endereço que foi lido/gravado/executado e estará no intervalo de [beginAddress, endAddress) dos parâmetros para .Memory(). O intervalo está entreaberto. Ou seja, nenhum dos eventos retornados terá um endereço correspondente a endAddress, mas pode haver eventos correspondentes a endAddress – 1. |
Tamanho | O tamanho da leitura/gravação/execução em bytes. Normalmente, terá até 8 bytes. No caso de execução do código, é o número de bytes na instrução que foi executada. |
Valor | O valor que foi lido, gravado ou executado. No caso de execução, ele contém os bytes de código para a instrução. Observe que os bytes de instrução são listados na ordem MSB pelo desmontador, mas serão armazenados em valor na ordem LSB. |
Comentários
Os seguintes tipos de acesso são permitidos nas consultas de TTD.Memory:
- r - read
- w - write
- rw - read / write
- e - execute
- rwe - read / write / execute
- ec - execute /change
Observe que essa é uma função que faz computação, de modo que leva um tempo para ser executada.
Exemplo de uso
Este exemplo mostra uma tabela com todas as posições no rastreamento em que ocorreu acesso de leitura nos quatro bytes de memória começando em 0x00a4fca0. Clique em qualquer entrada para detalhar cada ocorrência de acesso à memória.
dx -g @$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")
Você pode clicar nos campos TimeStart em qualquer um dos eventos na tabela para exibir informações sobre esse evento.
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
Clique em [Viagem no tempo] para mover para a posição no rastreamento em que o evento ocorreu.
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
Neste exemplo, todas as posições no rastreamento em que os quatro bytes de memória começando em 0x1bf7d0 foram acessados por leitura/gravação são listadas. Clique em qualquer entrada para detalhar cada ocorrência de acesso à memória.
0:000> dx @$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")
@$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")
[0x0]
[0x1]
[0x2]
[0x3]
...
Neste exemplo, todas as posições no rastreamento em que os quatro bytes de memória começando em 0x13a1710 foram acessados por execução/alteração são listadas. Clique em qualquer item para obter informações adicionais sobre cada ocorrência de acesso à memória.
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
Confira também
Depuração de viagem no tempo - Introdução à Depuração de objetos de viagem no tempo