【转帖】学习WinDbg - (1)查看内核数据结构

首先进入本地内核调试,菜单“File” -- “Kernel Debug..”,选“Local”项,确定。

然后要设定好符号文件,WinDbg就是通过符号文件才能显出内核数据结构。
对于查看内核数据结构,我们只要设定好ntoskrnl.exe的符号文件就可以了。
  
//设定符号文件路径到本地及微软服务器:
lkd> .sympath SRV*H:/Symbols*http://msdl.microsoft.com/download/symbols
  
//下载ntoskrnl.exe的符号文件:
lkd> .reload /f nt
WinDbg将会从微软的符号文件服务器去下载ntoskrnl.exe的符号文件到本地。
  
//查看详细的模块信息:
lkd> !lmi nt
Loaded Module Info: [nt]
          Module: ntkrnlpa
    Base Address: 804d8000
      Image Name: ntkrnlpa.exe
    Machine Type: 332 (I386)
      Time Stamp: 45e53f9c Wed Feb 28 16:38:52 2007
            Size: 1f6400
        CheckSum: 1facf5
Characteristics: 12e  
Debug Data Dirs: Type   Size      VA   Pointer
              CODEVIEW     25,   9540,     9540 RSDS - GUID: {F612363D-B38C-423C-B085-59DDBCA9F2F7}
                Age: 1, Pdb: ntkrnlpa.pdb
      Image Type: MEMORY    - Image read successfully from loaded memory.
     Symbol Type: PDB       - Symbols loaded successfully from symbol server.
                  H:/Symbols/ntkrnlpa.pdb/F612363DB38C423CB08559DDBCA9F2F71/ntkrnlpa.pdb
     Load Report: public symbols , not source indexed
                  H:/Symbols/ntkrnlpa.pdb/F612363DB38C423CB08559DDBCA9F2F71/ntkrnlpa.pdb

可以看到,ntoskrnl的符号文件已经成功加载了,现在就可以用dt (Display Type)命令来查看内核数据结构了。

//列出所有的内核数据结构的名称:
lkd> dt nt!_*
           nt!_LIST_ENTRY
           nt!_LIST_ENTRY
           nt!_IMAGE_NT_HEADERS
           nt!_IMAGE_FILE_HEADER
           nt!_IMAGE_OPTIONAL_HEADER
           nt!_IMAGE_NT_HEADERS
           nt!_LARGE_INTEGER

//列出DRIVER_OBJECT的结构
lkd> dt nt!_DRIVER_OBJECT
    +0x000 Type              : Int2B
    +0x002 Size              : Int2B
    +0x004 DeviceObject      : Ptr32 _DEVICE_OBJECT
    +0x008 Flags             : Uint4B
    +0x00c DriverStart       : Ptr32 Void
    +0x010 DriverSize        : Uint4B
    +0x014 DriverSection     : Ptr32 Void
    +0x018 DriverExtension   : Ptr32 _DRIVER_EXTENSION
    +0x01c DriverName        : _UNICODE_STRING
    +0x024 HardwareDatabase : Ptr32 _UNICODE_STRING
    +0x028 FastIoDispatch    : Ptr32 _FAST_IO_DISPATCH
    +0x02c DriverInit        : Ptr32    
    +0x030 DriverStartIo     : Ptr32    
    +0x034 DriverUnload      : Ptr32    
    +0x038 MajorFunction     : [28] Ptr32
      
   
//清屏
.cls

你可能感兴趣的:(驱动开发)