我想看到的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