-
-
[求助]Windbg 中地址跳转的问题
-
发表于: 2008-7-14 22:13 4197
-
加载一个内核Dump:
kd> !object \BaseNamedObjects\
...
Hash Address Type Name
---- ------- ---- ----
00 85a011a0 Mutant SHIMLIB_LOG_MUTEX
...
33 e25212b0 Section CTF.TimListCache.FMPDefault...
kd> !object e25212b0
Object: e25212b0 Type: (865b12b0) Section
ObjectHeader: e2521298 (old version)
HandleCount: 11 PointerCount: 12
Directory Object: e17d5eb0 Name: CTF.TimListCache.FMPDefault...
kd> dt _object_header e2521298
nt!_OBJECT_HEADER
+0x000 PointerCount : 12
+0x004 HandleCount : 11
+0x004 NextToFree : 0x0000000b
+0x008 Type : 0x865b12b0 _OBJECT_TYPE
+0x00c NameInfoOffset : 0x10 ''
+0x00d HandleInfoOffset : 0 ''
+0x00e QuotaInfoOffset : 0x20 ' '
+0x00f Flags : 0 ''
+0x010 ObjectCreateInfo : 0x854eefc0 _OBJECT_CREATE_INFORMATION
+0x010 QuotaBlockCharged : 0x854eefc0
+0x014 SecurityDescriptor : 0xe1866895
+0x018 Body : _QUAD
kd> dt nt!_object_header_name_info e2521298-0x10
+0x000 Directory : 0xe17d5eb0 _OBJECT_DIRECTORY
+0x004 Name : _UNICODE_STRING "CTF.TimListCache.FMPDefault..."
+0x00c QueryReferences : 1
kd> dt _object_directory 0xe17d5eb0
nt!_OBJECT_DIRECTORY
+0x000 HashBuckets : [37] 0xe16ef828 _OBJECT_DIRECTORY_ENTRY
+0x094 Lock : _EX_PUSH_LOCK
+0x098 DeviceMap : (null)
+0x09c SessionId : 0
+0x0a0 Reserved : 0
+0x0a2 SymbolicLinkUsageCount : 0
注意这里的[37],一个Hash Table有37个项,0xe16ef828 是他的首地址,我现在想跳到第33个项,该怎么做呢?
当然,如果知道_OBJECT_DIRECTORY_ENTRY,在计算从首地址到33项的距离,也可以算出来,不过这样很麻烦。
kd> !object \BaseNamedObjects\
...
Hash Address Type Name
---- ------- ---- ----
00 85a011a0 Mutant SHIMLIB_LOG_MUTEX
...
33 e25212b0 Section CTF.TimListCache.FMPDefault...
kd> !object e25212b0
Object: e25212b0 Type: (865b12b0) Section
ObjectHeader: e2521298 (old version)
HandleCount: 11 PointerCount: 12
Directory Object: e17d5eb0 Name: CTF.TimListCache.FMPDefault...
kd> dt _object_header e2521298
nt!_OBJECT_HEADER
+0x000 PointerCount : 12
+0x004 HandleCount : 11
+0x004 NextToFree : 0x0000000b
+0x008 Type : 0x865b12b0 _OBJECT_TYPE
+0x00c NameInfoOffset : 0x10 ''
+0x00d HandleInfoOffset : 0 ''
+0x00e QuotaInfoOffset : 0x20 ' '
+0x00f Flags : 0 ''
+0x010 ObjectCreateInfo : 0x854eefc0 _OBJECT_CREATE_INFORMATION
+0x010 QuotaBlockCharged : 0x854eefc0
+0x014 SecurityDescriptor : 0xe1866895
+0x018 Body : _QUAD
kd> dt nt!_object_header_name_info e2521298-0x10
+0x000 Directory : 0xe17d5eb0 _OBJECT_DIRECTORY
+0x004 Name : _UNICODE_STRING "CTF.TimListCache.FMPDefault..."
+0x00c QueryReferences : 1
kd> dt _object_directory 0xe17d5eb0
nt!_OBJECT_DIRECTORY
+0x000 HashBuckets : [37] 0xe16ef828 _OBJECT_DIRECTORY_ENTRY
+0x094 Lock : _EX_PUSH_LOCK
+0x098 DeviceMap : (null)
+0x09c SessionId : 0
+0x0a0 Reserved : 0
+0x0a2 SymbolicLinkUsageCount : 0
注意这里的[37],一个Hash Table有37个项,0xe16ef828 是他的首地址,我现在想跳到第33个项,该怎么做呢?
当然,如果知道_OBJECT_DIRECTORY_ENTRY,在计算从首地址到33项的距离,也可以算出来,不过这样很麻烦。
赞赏
赞赏
雪币:
留言: