windbg各种命令学习

本文详细介绍了Windbg中的一些常用调试命令,如dt用于查看结构体,ln用于查找内存地址对应的函数,dd/db用于数据查看,bp用于设置断点,s进行搜索,a修改指令,以及如何对未知驱动下断等。通过这些命令,可以帮助深入理解系统运行过程和调试技巧。
摘要由CSDN通过智能技术生成

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 _peb 7ffdf000  //将7ffdf000 处的数据按照_peb结构显示出来

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结构显示

//查看_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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值