首页
社区
课程
招聘
[求助]请问在Windbg中,怎么看结构体中的联合体有哪些成员变量
发表于: 2012-8-11 19:09 7930

[求助]请问在Windbg中,怎么看结构体中的联合体有哪些成员变量

2012-8-11 19:09
7930
比如说,查看irp中的成员变量,我们可以用命令
dt _irp

得到结果
ntdll!_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


然后我想查看最后一个成员变量Tail中有哪些成员变量,看了一下MSDN,这是一个联合体,可以用Windbg查看其中的成员变量吗?现在正在看的书涉及到了Tail.Overlay.CurrentStackLocation这个成员变量,我想看一下这个成员变量的地址偏移是多少

另外,如果只用Windbg,我如何能够知道成员变量Tail的大小呢

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 79
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
绑顶
2018-7-31 15:56
0
雪    币: 128
活跃值: (969)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顶一下
2018-8-1 00:31
0
雪    币: 30
活跃值: (315)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
4
不懂,帮顶
2018-8-1 16:45
0
雪    币: 34
活跃值: (101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
看了下msdn Tail 联合体如下
union {
    struct {
      union {
        KDEVICE_QUEUE_ENTRY DeviceQueueEntry;
        struct {
          PVOID DriverContext[4];
        };
      };
      PETHREAD   Thread;
      LIST_ENTRY ListEntry;
    } Overlay;
  } Tail;
仍然可以通过使用dt Tail 地址来查看成员变量, 地址后还可以 加 Ln 表示迭代遍历显示数据结构深度为n,你所说的 Tail.Overlay.CurrentStackLocation这个成员msdn上没有,可能时未公开的。只能是你dt Tail 这个结构后,再分析联合体,计算偏移了。
2018-8-2 00:01
0
游客
登录 | 注册 方可回帖
返回
//