Ghidra 对现场访问处理不当

逆向工程 视窗 反编译 吉德拉
2021-06-30 04:53:37

我有一个程序可以在 Ghidra 中反编译以包含该行

temp_5f2f2f81bc = *(CPedIntelligence **)(&DAT_000010c0 + (longlong)pCVar2);

temp_5f2f2f81bc是一个CPedIntelligence*pCVar2是 a CPed*,并且在 offset 处CPed有 a 所以这应该反编译为. 有没有办法告诉 Ghidra“不,不应该被施展到 longlong?”CPedIntelligence*0x10c0temp_5f2f2f81bc = pCVar2->intelligence;pCVar2

我注意到其他时候也会发生这种情况,它通常似乎与存储在寄存器中的结构相关联(这里,pCVar2存储在 中R13)。但是,在函数的局部变量中,pCVar2被列为存储在HASH:5f32eb8...该寄存器中,除了作为 this 的存储之外该寄存器从未在该函数中使用CPed*,所以如果我可以强行告诉反编译器“该寄存器在整个函数中都具有这种类型”,那么会帮助。我尝试使用脚本创建一个存储在 中的局部变量R13,但反编译器没有发现它。

0个回答
没有发现任何回复~