为什么 IDA 调用分析失败?

逆向工程 艾达 反编译器
2021-06-15 00:28:35

我正在尝试使用 IDA v6.95 反转 ELF (C++) 二进制文件。反编译器抱怨调用分析失败。我正在附加IDB 数据库我该怎么做才能修复 IDB?

1个回答

Call analysis failed at: 08048B19

该位置的指令:

call __ZNSaIcEC1Ev ; std::allocator<char>::allocator(void)

现在反编译这个函数:

int __stdcall std::allocator<char>::allocator(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) {
    return std::allocator<char>::allocator(a1, a2, a3, a4, a5, a6, a7, a8);
}

请注意,hexrays 的函数签名是错误的,它需要太多的参数。改成后:

void __stdcall std__allocator_char___allocator()

主函数将反编译。

请注意,hexrays 不接受函数原型中的模板参数<char>和命名空间说明符std::由于更改原型不会重命名函数,您可以用任何名称替换函数名称,只要 ida 认为它有效。