2016-07-05 69 views
0

最近,我得到了一个ELF可执行文件,旨在用于基于ARM的微控制器。令我惊讶的是,当我试图用arm-none-eabi-objdump倾销一切检查它,它保持着错误专利ARM ELF二进制

File format not recognized

没有在问起是谁提供的二进制的人时,我才知道,它被编译(和链接)与专有工具链,我不会提及它们以免给他们额外的宣传。随后,我被告知需要使用上述专有工具链中的实用程序才能反汇编二进制文件。现在这让我好奇。 GNU的objdump如何不能解析ELF文件?据我所知,ELF是一种标准的免费文件格式。当然,即使指令集没有被识别,也应该至少可以获得段和符号表,以及符号的二进制反汇编。也许这些信息是加密的?

回答

0

可能的是,ELF头部以某种方式被损坏以强制执行反调试技术。你可以从crackme挑战中学到很多东西。乔纳森Salwan有一个x86裂缝,似乎也这样做。您可以在他的博客文章“二进制分析,如果可以的话,请指望我”中详细了解它:http://shell-storm.org/blog/A-binary-analysis-count-me-if-you-can/

+1

另外,您应该先用'readelf'而不是'objdump'开始。 –

+0

伟大的博客,谢谢。根据您的猜测,我向请求发送二进制文件的人请求进行反汇编。原来他们得到了同样的错误。经过一番调查,我们发现二进制文件被破坏了。然后我得到了一个新的,当通过GNU Binutils时按预期工作。所以毕竟没有加密,至少不是有意的。不过,你链接的文章真的很有趣。 – goblin

+0

@EmployedRussian readelf确实正确处理ELF头,但随后说: 'readelf:错误:无法在0x2800字节部分headers'读 'readelf:错误:无法在0x3e80000字节节头的读' 'readelf:错误:段头不可用!' 'readelf:错误:无法读取0x800000字节的程序头文件' 。否则,它会正确识别ELF类,字节顺序,ABI,标志,表格大小等。 – goblin