【问题标题】:Proprietary ARM ELF binary专有的 ARM ELF 二进制文件
【发布时间】:2016-11-07 17:30:50
【问题描述】:

最近,我得到了一个用于基于 ARM 的微控制器的 ELF 可执行文件。令我惊讶的是,当我尝试通过使用arm-none-eabi-objdump 转储所有内容来检查它时,它一直失败并出现错误

文件格式无法识别

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

【问题讨论】:

    标签: arm elf objdump


    【解决方案1】:

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

    【讨论】:

    • 此外,您可能应该以readelf 而不是objdump 开头。
    • 很棒的博客,谢谢。根据您的推测,我要求向我发送二进制文件的人尝试对其进行反汇编。结果他们得到了同样的错误。经过一番调查,我们发现二进制文件不知何故损坏了。然后我得到了一个新的,它在通过 GNU Binutils 时按预期工作。所以毕竟没有加密,至少不是故意的。不过,您链接到的文章确实很有趣。
    • @EmployedRussian readelf 确实正确处理了 ELF 标头,但随后它说: readelf: Error: Unable to read in 0x2800 bytes of section headers readelf: Error: Unable to read in 0x3e80000 bytes of section headers readelf: Error: Section headers are not available! readelf: Error: Unable to read in 0x800000 bytes of program headers 。否则它会正确识别 ELF 类、字节顺序、ABI、标志、表大小等。
    猜你喜欢
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 2020-10-01
    相关资源
    最近更新 更多