gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:26:08 26 4
gpt4 key购买 nike

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 寄存器的值复制/粘贴到您的计算器中。然后添加调用参数的值并减去地址的值,如左侧所示。这才是真正的地址。

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

关于c# - 如何配置 Visual Studio 2008 以在反汇编窗口中显示真实的 EIP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5607461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com