【问题标题】:Windbg disassembler address resolutionWindbg反汇编地址解析
【发布时间】: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下面的括号(**000007fefb155019**). Normally je jumps to profsvc!CUserProfileService::_RegisterGPNotification+0x44 which is not the address 000007fefb155019为什么地址与跳转地址不同?谢谢你的帮助。
  • 优化的反汇编与符号中显示的偏移不匹配,在优化函数可以分解为块并且pdb不反映优化的地址后(windbg通常可以解决它,即使它们不是线性的)被称为 $ea 和 $ea2 伪寄存器的括号中的地址将始终是 rigt
  • 非常感谢。我很感激。

标签: windbg disassembly


【解决方案1】:

这是由于优化造成的,请参阅以下 MSDN 文章:

https://msdn.microsoft.com/en-us/library/windows/hardware/ff541382(v=vs.85).aspx

【讨论】:

  • 非常感谢。我很感激。
猜你喜欢
  • 1970-01-01
  • 2012-08-06
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
相关资源
最近更新 更多