繁体   English   中英

如何配置Visual Studio 2008以在反汇编窗口中显示真实的EIP地址?

[英]How do I configure Visual Studio 2008 to show the true EIP address in the disassembly window?

Visual Studio 2008调试器在反汇编窗口中显示相对地址,如下面的代码段所示:

00000548 8B 4D B8           mov         ecx,dword ptr [ebp-48h]
0000054b 8B 01              mov         eax,dword ptr [ecx]
0000054d FF 50 28           call        dword ptr [eax+28h]
00000550 89 85 44 FF FF FF  mov         dword ptr [ebp+FFFFFF44h],eax
00000556 8B 8D 44 FF FF FF  mov         ecx,dword ptr [ebp+FFFFFF44h]
0000055c E8 2F 1D 2C 76     call        762C2290
00000561 90                 nop

注意地址的值如何太低而不是真实地址。 当我在地址0x548(第一行)时,我的EIP是0x034D1A90。 如何配置调试器/反汇编窗口以显示实际地址(例如,0x034D1A90)而不是相对地址(例如,0x0548)?

是的,这是调试器中的一个错误。 它计算的地址基于左侧列出的地址。 哪些是假的,实际的机器代码不会从地址0开始。它没有显示真实地址的选项。

要查找真实的呼叫目标地址,您必须在呼叫指令上设置断点。 当它命中时,使用Debug + Windows + Registers并将EIP寄存器的值复制/粘贴到您的计算器中。 然后添加call参数的值并减去地址的值,如左侧所示。 那是真实的地址。

要在那里查看机器代码,接下来必须将调试器切换到非托管模式。 Debug + Windows + Call Stack并双击非托管方法的其中一个堆栈帧。 如果你不确定,在底部。 现在,在“地址”框中键入“0x”,然后复制/粘贴计算的地址。 确保已启用符号服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM