我想看到的WinDbg使用 'DT' 命令IMAGE_DOS_HEADER结构:是否可以在windbg调试会话中向公共符号添加缺失符号?
0:001> dt ntdll!IMAGE_DOS_HEADER **Symbol ntdll!IMAGE_DOS_HEADER not found**
我搜索,发现别人已经能够做到这一点: MSDN Blogs > Junyoung's Blog > Portable Executable File Format on Memory Dump
0:000> dt IMAGE_DOS_HEADER 77c00000 ntdll!IMAGE_DOS_HEADER +0x000 e_magic : 0x5a4d ? MZ +0x002 e_cblp : 0x90 +0x004 e_cp : 3 +0x006 e_crlc : 0 +0x008 e_cparhdr : 4 +0x00a e_minalloc : 0 +0x00c e_maxalloc : 0xffff +0x00e e_ss : 0 +0x010 e_sp : 0xb8 +0x012 e_csum : 0 +0x014 e_ip : 0 +0x016 e_cs : 0 +0x018 e_lfarlc : 0x40 +0x01a e_ovno : 0 +0x01c e_res : [4] 0 +0x024 e_oemid : 0 +0x026 e_oeminfo : 0 +0x028 e_res2 : [10] 0 +0x03c e_lfanew : 232
是否有可能丢失的符号添加到NTDLL的公共符号让我可以一在windbg调试会话中访问数据结构字段?
这是很奇怪的 - 我想在WIN7和WINXP系统下,得到了不同的结果 - 的WinXP:
0:015> dt ntdll!*HEADER* ntdll!_IMAGE_NT_HEADERS ntdll!_IMAGE_FILE_HEADER ntdll!_IMAGE_OPTIONAL_HEADER ntdll!_SLIST_HEADER ntdll!_DISPATCHER_HEADER ntdll!_IMAGE_SECTION_HEADER
Win7的:
0:000> dt ntdll!*HEADER* ntdll!_IMAGE_NT_HEADERS ntdll!_IMAGE_FILE_HEADER ntdll!_IMAGE_OPTIONAL_HEADER ntdll!_IMAGE_DOS_HEADER ntdll!_SLIST_HEADER ntdll!_DISPATCHER_HEADER ntdll!_MM_PAGE_ACCESS_INFO_HEADER ntdll!_WHEA_ERROR_RECORD_HEADER ntdll!_HEAP_USERDATA_HEADER ntdll!_HEAP_USERDATA_HEADER ntdll!_WHEA_ERROR_RECORD_HEADER_VALIDBITS ntdll!_WHEA_ERROR_RECORD_HEADER_FLAGS ntdll!_XSAVE_AREA_HEADER
因此,似乎_IMAGE_DOS_HEADER符号从我的问题是 - - WINXP的ntdll.dll中的公共符号如何添加符号,如果我知道的结构,一个dll的一个公共符号的dll我没有来源?
他认为* *某些类型的列表中,这个手段他确实有这些符号。没有它们,只有导出的符号可用。 – 2016-01-29 00:35:16