[Windbg Command]dt 사용 팁
디버깅을 진행 하다 보면 특정 메모리의 tag는 확인하였으나 구조체를 알 수 없는 경우가 많이 있습니다. 이 때 dt 명령을 적절히 사용하면 손쉽게 원하는 정보를 얻을 수 있습니다.
먼저 process 정보를 확인해 본 후 fffffa8004952c10 가 어떤 구조체를 가지는지 확인해 보도록 하겠습니다.
lkd> !process 0 0 explorer.exe
PROCESS fffffa8004952c10
SessionId: 1 Cid: 12dc Peb: 7fffffdb000 ParentCid: 1248
DirBase: a3fd9000 ObjectTable: fffff8800b1a30f0 HandleCount: 1003.
Image: explorer.exe
!pool 명령을 사용해서 이 주소는 NonPagedPool 이고 Proc 즉 Process object 와 관련이 있다는 것을 알 수 있습니다.
lkd> !pool fffffa8004952c10 2
Pool page fffffa8004952c10 region is Nonpaged pool
*fffffa8004952bd0 size: 430 previous size: 130 (Allocated) *Proc (Protected)
Pooltag Proc : Process objects, Binary : nt!ps
Process 와 관련이 있다는 것을 알았으므로 아래와 깉은 방법으로 어떤 구조체들이 존재하는지 확인해 볼 수 있습니다.
lkd> dt nt!_*proc*
ntkrnlmp!_KPROCESSOR_STATE
ntkrnlmp!_PROCESSOR_POWER_STATE
ntkrnlmp!_KPROCESS
ntkrnlmp!_EPROCESS
ntkrnlmp!_EPROCESS_QUOTA_BLOCK
ntkrnlmp!_WOW64_PROCESS
ntkrnlmp!_SE_AUDIT_PROCESS_CREATION_INFO
ntkrnlmp!_ALPC_PROCESS_CONTEXT
ntkrnlmp!_WHEA_GENERIC_PROCESSOR_ERROR
ntkrnlmp!_RTL_USER_PROCESS_PARAMETERS
ntkrnlmp!_PROCESSOR_CACHE_TYPE
ntkrnlmp!_WHEA_GENERIC_PROCESSOR_ERROR_VALIDBITS
감사합니다.