ghidra 重命名失败

逆向工程 吉德拉 反编译
2021-07-05 19:19:38

使用反编译的 dll 中的 ghidra 9.2.1(2020 年 12 月 15 日),我可以用 L 重命名变量。

  • 有时(找不到重现),当我重命名第二个局部变量(它没有出现在列表/程序集中)时,先前的重命名被取消。

  • 有时(同上),我根本无法重命名一个特定变量。

我错过了什么?

1个回答

我没有真正的答案,但有一些提示可能有助于解决手头的问题:

正如评论中已经指出的,Ghidra 仍然存在一些问题,一个例子是:https : //github.com/NationalSecurityAgency/ghidra/issues/193因此,也许您应该使用最新的 Ghidra 版本和最小的示例在 Github 上打开另一个问题来重现该问题。根据我的经验,开发人员非常乐于助人,并对每个打开的问题做出反应。

重命名变量后,Ghidra 将重新运行当前显示函数的分析。在此分析的某个阶段,它似乎决定摆脱您刚刚重命名的变量而由于某种原因,有时决定用新的名称之前引入新的变量做你改名(现在删除)变量做了同样的事情。这实际上看起来好像重命名被取消了。

根据我的经验,它有时有助于Commit Local Names和/或Commit Params/Return(从 Decompiler 视图的上下文菜单中选择它)。我意识到,这不是一个令人满意的答案,因为我自己并不确切知道那里发生了什么,但从实际角度来看,这为我解决了多次问题,因此它也可能对您有所帮助。