代码之家  ›  专栏  ›  技术社区  ›  Rob Wells

你能找出哪个编译器被用来编译一个程序吗?

  •  18
  • Rob Wells  · 技术社区  · 16 年前

    给定一个从C编译并在Solaris上运行的可执行文件,是否可以确定使用哪个编译器编译关联的不完整可执行文件?

    当使用字符串或file命令时,我看不到任何东西,而且magic似乎没有包含任何特定的内容。

    编译器通常会在其可执行输出文件中添加指纹吗?

    干杯

    7 回复  |  直到 16 年前
        1
  •  6
  •   Tim Matthews    16 年前

    是的,艾达做这个很棒。它使用了一种叫做 FLIRT .

        2
  •  4
  •   dr. evil    16 年前

    PEID 我会成功的。它通常工作得很好。显然,PEID是一个windows工具,但它不重要,应该向编译器显示(有时甚至是特定的版本信息)

        3
  •  3
  •   DaveS    14 年前

    如果未剥离可执行文件,请尝试/usr/ccs/bin mcs-p 这通常会显示编译器、链接器和所有使用的头文件

        4
  •  2
  •   zildjohn01    16 年前

    使用您试图识别的每个编译器构建小型测试应用程序。然后在十六进制编辑器中查看结果,并尝试查找模式。结果可能非常明显,例如 "Rich" signatures 来自微软的链接器。

        5
  •  1
  •   Jeff Taylor    11 年前

    未剥离:

    $cc-O你好

    $file a.out

    a、 输出:ELF 32位MSB可执行文件SPARC32PLUS版本1,需要V8+版本,动态链接,未剥离

    $strings-a.out | grep cc

    /opt/solaristudio12.3/prod/bin/cc-O hello.c

    $dwarfdump-i a.out | grep compile_o

    DW_AT_SUN_compile_options Xa;O;R= 2013/10/18;后端;未经加工的光盘

    剥夺:

    美元脱衣

    $file a.out

    a、 输出:ELF 32位MSB可执行文件SPARC32PLUS版本1,需要V8+版本,动态链接,剥离

    $strings-a.out | grep cc

        6
  •  0
  •   dirkgently    16 年前

        7
  •  0
  •   Ignacio Vazquez-Abrams    16 年前

    编译器通常在编译后的文件中以明文形式添加自己的个人“签名”。您可以使用诸如字符串之类的工具将明文输出。

    推荐文章