全局重命名函数

逆向工程 吉德拉
2021-06-24 20:07:06

我反编译了一个 DLL,在符号树中,我单击了一个函数。该函数在反编译窗口中如下所示:

undefined4 process_something(undefined4 param_1,undefined4 param_2)
{
      thunk_FUN_1017e9e0(param_1,param_2);
      return 0;
}

我右键单击 FUN_1017e9e0,然后选择“重命名函数”。我已将其重命名为“process_something_internal”,并将“命名空间”设置为全局。

现在函数看起来像这样:

undefined4 process_something(undefined4 param_1,undefined4 param_2)
{
      process_something_internal1(param_1,param_2);
      return 0;
}

但是,当我双击“process_something_internal1”时,它会将我带到函数:

void FUN_1017e9e0(undefined4 param_1,undefined4 param_2)
{
    //do something
    return;
 }

为什么函数没有重命名?

谢谢!

2个回答

您重命名了 thunk ("thunk_FUN_1017e9e0")。该 thunk 指向函数“FUN_1017e9e0”。当您双击 thunk 时,Ghidra 会绕过它并直接将您带到 thunk 函数。

在 Ghidra 符号表中,您应该看到“process_something_internal1”(thunk)和“FUN_1017e9e0”(thunked 函数)的 2 个单独条目。

这个函数已经被加载,因此它在内存中。当您覆盖它的名称时,内存引用仍然相同。