天天看點

Windbg指令檢視IRP IO_STACK_LOACTION結構體成員

     dt指令檢視結構體成員。加入 /r 遞歸列舉每個成員(dt nt!_irp /r)。

     這個是雙機調試32位系統下查詢的結果, 列舉每個成員的偏移量,對于調試彙編代碼或者逆向分析驅動是很有幫助的,彙編通路結果體成員的時候都是通過偏移值進行的。知道偏移值以及資料結構的類型,就可以知道通路的成員是那一個了。

kd> dt nt!_irp

   +0x000 Type             : Int2B

   +0x002 Size             : Uint2B

   +0x004 MdlAddress       : Ptr32 _MDL

   +0x008 Flags            : Uint4B

   +0x00c AssociatedIrp    : __unnamed

   +0x010 ThreadListEntry  : _LIST_ENTRY

   +0x018 IoStatus         : _IO_STATUS_BLOCK

   +0x020 RequestorMode    : Char

   +0x021 PendingReturned  : UChar

   +0x022 StackCount       : Char

   +0x023 CurrentLocation  : Char

   +0x024 Cancel           : UChar

   +0x025 CancelIrql       : UChar

   +0x026 ApcEnvironment   : Char

   +0x027 AllocationFlags  : UChar

   +0x028 UserIosb         : Ptr32 _IO_STATUS_BLOCK

   +0x02c UserEvent        : Ptr32 _KEVENT

   +0x030 Overlay          : __unnamed

   +0x038 CancelRoutine    : Ptr32     void 

   +0x03c UserBuffer       : Ptr32 Void

   +0x040 Tail             : __unnamed

kd> dt nt!_io_stack_location

   +0x000 MajorFunction    : UChar

   +0x001 MinorFunction    : UChar

   +0x002 Flags            : UChar

   +0x003 Control          : UChar

   +0x004 Parameters       : __unnamed

   +0x014 DeviceObject     : Ptr32 _DEVICE_OBJECT

   +0x018 FileObject       : Ptr32 _FILE_OBJECT

   +0x01c CompletionRoutine : Ptr32     long 

   +0x020 Context          : Ptr32 Void