1 dt命令:
dt _peb 直接显示
lkd> dt _peb
nt!_PEB
+0x000 InheritedAddressSpace : UChar
+0x001 ReadImageFileExecOptions : UChar
+0x002 BeingDebugged : UChar
+0x003 SpareBool : UChar
+0x004 Mutant : Ptr32 Void
+0x008 ImageBaseAddress : Ptr32 Void
···················
dt -b _peb 递归式显示
lkd> dt -b _peb
nt!_PEB
+0x000 InheritedAddressSpace : UChar
+0x001 ReadImageFileExecOptions : UChar
+0x002 BeingDebugged : UChar
+0x003 SpareBool : UChar
+0x004 Mutant : Ptr32
+0x008 ImageBaseAddress : Ptr32
+0x00c Ldr : Ptr32
+0x010 ProcessParameters : Ptr32
+0x014 SubSystemData : Ptr32
+0x018 ProcessHeap : Ptr32
+0x01c FastPebLock : Ptr32
+0x020 FastPebLockRoutine : Ptr32
+0x024 FastPebUnlockRoutine : Ptr32
+0x028 EnvironmentUpdateCount : Uint4B
+0x02c KernelCallbackTable : Ptr32
+0x030 SystemReserved : Uint4B
+0x034 AtlThunkSListPtr32 : Uint4B
+0x038 FreeList : Ptr32
+0x03c TlsExpansionCounter : Uint4B
+0x040 TlsBitmap : Ptr32
+0x044 TlsBitmapBits : Uint4B
+0x04c ReadOnlySharedMemoryBase : Ptr32
+0x050 ReadOnlySharedMemoryHeap : Ptr32
+0x054 ReadOnlyStaticServerData : Ptr32
+0x058 AnsiCodePageData : Ptr32
+0x05c OemCodePageData : Ptr32
+0x060 UnicodeCaseTableData : Ptr32
+0x064 NumberOfProcessors : Uint4B
+0x068 NtGlobalFlag : Uint4B
+0x070 CriticalSectionTimeout : _LARGE_INTEGER
+0x000 LowPart : Uint4B
+0x004 HighPart : Int4B
+0x000 u : __unnamed
+0x000 LowPart : Uint4B
+0x004 HighPart : Int4B
+0x000 QuadPart : Int8B
+0x078 HeapSegmentReserve : Uint4B
···········································
dt -r0 _peb 不显示子类型
dt -r1 _peb 显示一级子类型 还没依次
下面是显示 搜索的字符串
dt _teb -ny Client
lkd> dt _teb -ny client//不分大小写
nt!_TEB
+0x020 ClientId : _CLIENT_ID
dt exe文件名!!变量名 //可以显示变量 也可以直接dt 变量名
!pcr //查看CPU PCR内容
dt nt!_KPCR xxxxxx //可以观察PCR
dt _heap 或者 dt ntdll!_heap//查看_peb 中的ProcessHeap
lkd> dt _heap
nt!_HEAP
+0x000 Entry : _HEAP_ENTRY
+0x008 Signature : Uint4B
+0x00c Flags : Uint4B
+0x010 ForceFlags : Uint4B
+0x014 VirtualMemoryThreshold : Uint4B
+0x018 SegmentReserve : Uint4B
+0x01c SegmentCommit : Uint4B
+0x020 DeCommitFreeBlockThreshold : Uint4B
`````````````````````````````````````
dt _peb @$peb //取当前的PEB
dt PEB_LDR_DATA//查看PEB_LDR_DATA结构
//查看_LIST_ENTRY
lkd> dt _LIST_ENTRY
nt!_LIST_ENTRY
+0x000 Flink : Ptr32 _LIST_ENTRY
+0x004 Blink : Ptr32 _LIST_ENTRY
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
按MSDN解释是:
Each item in the list is a pointer to an LDR_DATA_TABLE_ENTRY structure,双向循环链表吧,从一个方向开始,不停的循环,就回到初始位了,就相当于遍历了一次
也就是只是上面这个 _LIST_ENTRY是只想LDR_DATA_TABLE_ENTRY结构的
后面可以将这个_LIST_ENTRY结构的地址以ldr_data_table_entry结构显示
lkd> dt _ldr_data_table_entry
nt!_LDR_DATA_TABLE_ENTRY
+0x000 InLoadOrderLinks : _LIST_ENTRY
+0x008 InMemoryOrderLinks : _LIST_ENTRY
+0x010 InInitializationOrderLinks : _LIST_ENTRY
+0x018 DllBase : Ptr32 Void
+0x01c EntryPoint : Ptr32 Void
+0x020 SizeOfImage : Uint4B
+0x024 FullDllName : _UNICODE_STRING
+0x02c BaseDllName : _UNICODE_STRING
+0x034 Flags : Uint4B
+0x038 LoadCount : Uint2B
+0x03a TlsIndex : Uint2B
+0x03c HashLinks : _LIST_ENTRY
+0x03c SectionPointer : Ptr32 Void
+0x040 CheckSum : Uint4B
+0x044 TimeDateStamp : Uint4B
+0x044 LoadedImports : Ptr32 Void
+0x048 EntryPointActivationContext : Ptr32 Void
+0x04c PatchInformation : Ptr32 Void
LIST_ENTRY