Windbg + IDA:计算模块中的地址

Posted

技术标签:

【中文标题】Windbg + IDA:计算模块中的地址【英文标题】:Windbg + IDA: calculate an address in a module 【发布时间】:2011-02-08 04:49:06 【问题描述】:

我正在远程调试一台 Windows XP 机器。我的一个驱动程序加载到地址 0xb2c4c000 到 0xb2cb9680。

现在,当我在 IDA 中打开驱动程序时,我想设置断点的偏移量是 00017619。

如何有效地将我的 IDA 地址匹配到 windbg?

我已经尝试了显而易见的方法,即对 0xb2c4c000 + 00017619 = 0xB2C635F7 求和,然后使用 windbg 中的“u”命令反汇编该地址。但结果与 IDA 中的程序集不匹配。

关于一个附带问题:有没有办法取消在 windbg 中运行的命令?有几次我运行了需要很长时间才能处理的命令,如果需要,我希望能够取消它们。这样我就可以继续工作了。

感谢您的宝贵时间。

【问题讨论】:

关于您的第二个问题 - 表现良好的扩展处理 ctrl-break (alt. ctrl-c) (这是取消花费太长时间的命令的方法) 您在 IDA 中查看了哪个偏移量?我假设您没有查看文件偏移量...您需要查看驱动程序模块的基地址,然后首先从偏移量中减去它。 【参考方案1】:

最新版本的 IDA Pro 允许您通过其 WinDbg 调试器插件调试设备驱动程序。

另一种选择是您可以重新设置数据库以匹配加载模块的基础,这样您就可以在 idb 和 windbg 会话之间进行一对一的映射。

【讨论】:

【参考方案2】:

您添加不正确。由于 IDA 假设 10000 作为入口点,因此正确的添加方式是

0xb2c4c000 + 00007619(减去10000)

【讨论】:

以上是关于Windbg + IDA:计算模块中的地址的主要内容,如果未能解决你的问题,请参考以下文章

windbg查看内存断点是物理地址还是虚拟地址

X64 反汇编程序 IDA 和 WINDBG。 IDA 不显示 x64 操作码

IDA+Windbg+Vmware调试

通过查看Windbg中汇编指令及内存中的值去定位软件崩溃问题

使用WinDbg获取SSDT函数表对应的索引再计算得出地址

使用IDA查看汇编代码上下文去辅助排查C++软件异常问题