使用 ghidra/x64dbg 同步,如何在 ghidra 的反编译窗口中显示动态值?

逆向工程 调试 吉德拉 x64dbg
2021-06-28 09:03:55

我在不调试符号的情况下反转程序和库。我正在使用 x64dbg 在特定区域中断并观察运行时发生的情况,并在 ghidra 中注释反编译版本。

我正在使用ret-sync在 x64dbg 和 ghidra 之间同步地平线。但是,在 x64dbg 中通常是地址而不是值直接可见,并且随着程序的进行,在 ghidra 中只有地平线是同步的,从 x64dbg 开始。

我想:

  1. 在 ghidra 的反编译窗口中查看变量值:随着程序的进行以及在执行过程中在两个日期时间之间分配的所有值;我怎样才能做到这一点 ?例如,当地址的指针更改时,我想直接关注“内容”,而不是“关注/首先关注”地址。

  2. 在数组和结构的情况下,从地址,我怎样才能显示所有值,就像我从 Visual Studio 调试一样?(例子)

  3. 如何在 x64dbg 中重新标记 ghidra 中重命名的变量?

1个回答

听起来您正在 Ghidra 中寻找合适的调试器集成。这最近已发布到debugger分支中的 GitHub 存储库还有一个很好的博客文章展示了它。

可悲的是,似乎还没有x64dbg后端,但我希望在不久的将来某个时候它会作为官方后端或社区插件出现。关于您的具体问题以及它们是否受支持或将来可能会通过此调试器功能得到支持:

在 ghidra 的反编译窗口中查看变量值

我认为目前不支持直接在反编译窗口中显示它们。但是显示当前函数的变量列表、全局变量和可能的特定地址似乎肯定会在某个时候得到支持,或者可以通过合理的努力来编写。

在数组和结构的情况下,从地址,我怎样才能显示所有值,就像我从 Visual Studio 调试一样?

我不太清楚你在这里的意思,因为我自己从未使用过 Visual Studio 调试。但这对我来说似乎是第一个问题的一个更具体的案例,要么在某个时候得到支持,要么可以很容易地为特定目的编写脚本。

如何在 x64dbg 中重新标记 ghidra 中重命名的变量?

这可能超出了调试器插件的范围,并且需要x64dbg侧面支持x64dbg插件需要一些功能来从 Ghidra 接收变量名称并应用它们。一般来说最有可能,但我不知道 Ghidra 使用的调试器协议是否支持这个概念。