You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ghidra修改函数签名后寄存器别名无作用域问题咨询

Ghidra寄存器别名替换问题解答

这是预期行为吗?

是Ghidra当前版本的预期行为。Ghidra修改函数签名后,会基于函数入口的寄存器-参数绑定关系(x86-64架构下main的前两个参数对应RDI、RSI),对整个函数范围内的对应寄存器引用统一替换成参数名——哪怕后续寄存器被重新赋值,用于调用其他函数(比如puts的RDI参数),也会被替换。它的参数别名逻辑没做寄存器生命周期的精细化跟踪,只看初始绑定关系。

解决方法

  • 手动恢复特定寄存器显示:在汇编列表里选中被错误替换的参数名(比如puts调用前的param_1),右键选「Convert to Register」,就能改回RDI寄存器的原始显示。
  • 创建局部变量覆盖:如果寄存器被重新赋值后存储了其他数据,在对应位置创建局部变量,Ghidra会优先用局部变量名显示,不再用参数别名。
  • 调整显示设置:打开「Edit > Tool Options > Disassembly」,找到「Parameter Substitution」相关选项,要么全局取消「Substitute Parameters for Registers」的勾选,要么针对当前函数禁用该功能,强制显示原始寄存器名。

内容的提问来源于stack exchange,提问作者Mark Morgan Lloyd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:47:03