【发布时间】:2016-10-05 21:27:25
【问题描述】:
我正在分析一个完整的内存转储,我应用了 Windbg uf 命令来查看函数的作用
0: kd> uf profsvc!CUserProfileService::_RegisterGPNotification
这是输出的一部分。我想知道为什么括号中的地址与profsvc!CUserProfileService::_RegisterGPNotification+0x44的地址不同,应该是
000007fe fb149276
但是是
000007fe fb155019.
当我尝试用u 分解地址000007fe fb155019 时,它指向
profsvc!CUserProfileService::_RegisterGPNotification+0x44:
我真的很困惑,非常感谢任何帮助。
WinDBG 的输出
….
profsvc!CUserProfileService::_RegisterGPNotification+0x2e:
000007fe`fb14925e ba01000000 mov edx,1
000007fe`fb149263 488bc8 mov rcx,rax
000007fe`fb149266 ff157c410200 call qword ptr [profsvc!_imp_RegisterGPNotification (000007fe`fb16d3e8)]
000007fe`fb14926c 85c0 test eax,eax
000007fe`fb14926e 0f84a5bd0000 je profsvc!CUserProfileService::_RegisterGPNotification+0x44 (**000007fe`fb155019**)
profsvc!CUserProfileService::_RegisterGPNotification+0x40:
000007fe`fb149274 33db xor ebx,ebx
000007fe`fb149276 eb00 jmp profsvc!CUserProfileService::_RegisterGPNotification+0x66 (000007fe`fb149278) Branch
profsvc!CUserProfileService::_RegisterGPNotification+0x66:
000007fe`fb149278 488b0d31b00200 mov rcx,qword ptr [profsvc!WPP_GLOBAL_Control (000007fe`fb1742b0)]
000007fe`fb14927f 488d052ab00200 lea rax,[profsvc!WPP_GLOBAL_Control (000007fe`fb1742b0)]
000007fe`fb149286 483bc8 cmp rcx,rax
000007fe`fb149289 740a je profsvc!CUserProfileService::_RegisterGPNotification+0x94 (000007fe`fb149295) Branch
0: kd> u 000007fe`fb155019
profsvc!CUserProfileService::_RegisterGPNotification+0x44:
000007fe`fb155019 ?? ???
^ Memory access error in 'u 000007fe`fb155019'
【问题讨论】:
-
这里可能有一个有效的问题,但这是不可读的。 我不知道为什么括号中的地址括号是什么意思?
-
我指的是指令je profsvc!CUserProfileService::_RegisterGPNotification+0x44下面的括号(**000007fe
fb155019**). Normally je jumps to profsvc!CUserProfileService::_RegisterGPNotification+0x44 which is not the address 000007fefb155019为什么地址与跳转地址不同?谢谢你的帮助。 -
优化的反汇编与符号中显示的偏移不匹配,在优化函数可以分解为块并且pdb不反映优化的地址后(windbg通常可以解决它,即使它们不是线性的)被称为 $ea 和 $ea2 伪寄存器的括号中的地址将始终是 rigt
-
非常感谢。我很感激。
标签: windbg disassembly