【问题标题】:Estimating compiler (GCC or LLVM-clang) version from a stripped ELF binary从剥离的 ELF 二进制文件估计编译器(GCC 或 LLVM-clang)版本
【发布时间】:2018-05-25 15:04:20
【问题描述】:

Linux 发行版的 ELF 二进制文件被剥离并且不包含“.comment”部分。 因此,我无法获得编译器构建 ELF 二进制文件的信息。 估计大部分都是 GCC 创建的,想知道使用的是哪个 GCC 版本。

我知道如果“.comment”部分包含在 ELF 二进制文件中,我可以使用“readelf”或“objdump”获取编译器信息。 该方法之前在stackoverflow.com上发布过

How to retrieve the GCC version used to compile a given ELF executable?

我想我可以使用反编译工具(例如,Hex-Rays Decompiler https://www.hex-rays.com/products/decompiler/)来估计编译器版本。 如果二进制文件不是由 GCC 创建的,我还想知道编译器名称。例如 LLVM-clang。

你知道一个工具来估计创建 ELF 二进制文件的编译器名称和版本吗? 我更喜欢使用免费工具。

【问题讨论】:

    标签: linux gcc clang elf decompiler


    【解决方案1】:

    Linux 发行版的 ELF 二进制文件被剥离并且不包含“.comment”部分。因此,我无法获得编译器构建 ELF 二进制文件的信息。

    大多数二进制文件带有一个单独的 debuginfo 包,确实.comment 部分,完整的源包允许您可以配置和构建(几乎)相同的二进制文件。

    检查调试信息或源代码包是一种更容易且更可靠的方式来回答您的问题,然后从二进制文件中猜测将永远是。

    你知道一个工具来估计创建 ELF 二进制文件的编译器名称和版本吗?

    我怀疑这样的工具是否存在:编写这样的工具几乎是毫无意义的练习。

    【讨论】:

    • debuginfo 听起来很有趣。我可以使用 debuginfo-insall 命令下载调试信息。但是,我无法理解如何使用它。请告诉我如何从 debuginfo 中了解编译器版本。
    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 2011-03-14
    • 2014-07-06
    • 2011-08-30
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 2016-03-21
    相关资源
    最近更新 更多