2010-04-07 4 views
1

objet에 대한 질문이 있습니다. 필드, 오프셋, VT :.NET 객체 덤프

0:000> !do 0x012817b8

Name: blabla.Union2 
MethodTable: 009231ac 
EEClass: 00921548 
Size: 16(0x10) bytes 
Fields: 
     MT Field Offset     Type VT  Attr Value Name 
790fd0f0 4000003  4  System.Object 0 instance 00000000 o 
7912d7c0 4000004  8  System.Int32[] 0 instance 00000000 arr 

의되는 의의는 무엇인가? 나는 .NET 메타 데이터 레이어와 함께 일하지만, 이후

답변

2

그것은 동안이었다 IIRC :
- 오프셋 바이트입니다 -이 필드를
노조의 필드에 대한 토큰 (이있는 분야가 있기 때문에 값을 포함)입니다 (합집합은 16 바이트, 필드 1은 바이트 4에서 시작하고 필드 2는 바이트 8에서 시작)
- VT는 V 테이블 슬롯입니다 (필드가 아니고 메소드이기 때문에 적용 할 수 없음)

+0

고마워요! ;) – Thomas

+0

아무 문제 없지만, 나는 그저 누군가가이 물건에 관심이 있다는 것에 놀랐다! "저수준 .net 메타 데이터"는 절대로 사용하지 않을 지식의 종류입니다. 8) – Task

0

또한 필드의 메모리를 볼 수 있습니다. dd youobjectaddress+4 l1

당신은 기본적으로 첫 번째 필드에 대한 포인터 인 poi(youobjectaddress+4)을 사용하여 windbg 스크립트에서 사용할 수 있습니다.