[ERROR] IDA 加载dump binary 报错 + 反编译报错wrong basic type sizes in compiler settings

从内存dump出ELF x64的binary 的text段后(很小的可能部分字节已经损坏),用IDA加载分析,想要查看反编译代码来分析。


一、用IDA加载binary时遇到报错

第一个弹框:SHT table size or offset is invalid. Continue?

[ERROR] IDA 加载dump binary 报错 + 反编译报错wrong basic type sizes in compiler settings

第二个弹框:Binary data is incorrect maximum possible value is 536

[ERROR] IDA 加载dump binary 报错 + 反编译报错wrong basic type sizes in compiler settings

IDA日志

[ERROR] IDA 加载dump binary 报错 + 反编译报错wrong basic type sizes in compiler settings

之后IDA便退出了。

搜索了一下发现是ELF文件头中的部分自己损坏了。用010editor + ELF template分析无果,未能修复。

*ERROR Line 566: Template passed end of file at variable 's_name_off'.


临时的解决办法

1. 使用IDA打开binary文件(不选择反汇编器,binary方式打开),在确定的指令位置按C反汇编(可以根据返回地址等来判断),直到有一个可以确定的subroutine(一个完整的函数基本块)反汇编分析出来。

2. 这时,可以使用F5插件反编译了,但是遇到报错:wrong basic type sizes in compiler settings。

由于要分析的函数是linux下gcc编译的64位的程序,因此用IDA打开一个正常的64位程序查看一下正确的Options->Complier配置( 如下图所示)。

[ERROR] IDA 加载dump binary 报错 + 反编译报错wrong basic type sizes in compiler settings

之后设置dump出来的程序IDA中的Options->Complier配置和上图一样即可正常反编译。

[ERROR] IDA 加载dump binary 报错 + 反编译报错wrong basic type sizes in compiler settings