Подтвердить что ты не робот

Как определить, какой компилятор использовался для компиляции исполняемого файла?

Из скомпилированного файла я могу увидеть, какой компилятор использовался для генерации файла?

4b9b3361

Ответ 1

Там также хорошая старая утилита "струны". Сбрасывает все строки ascii-ish, которые он находит в двоичном формате. Различные компиляторы вставляют разные объемы информации в исполняемые файлы, но многие из них будут включать явно идентифицирующие строки.

Ответ 2

Многие компиляторы/компоновщики вставляют раздел .comment в выходной файл, который идентифицирует их. Есть также несколько более тонких способов поведения, с которых вы могли бы отпечатать отпечатки компилятора, но я не знаю никаких существующих инструментов для этого.

Если у вас есть источник, самым простым решением будет попытка компиляции с каждым рассматриваемым компилятором, пока вы не получите двоичный файл, который соответствует байтам для байта (или даже близко).

Ответ 3

В некоторых случаях вы можете запустить ldd в двоичном файле и выяснить, с какой стандартной библиотекой он связан. Например, в Solaris gcc vs Sun CC vs whatever.

Для кода С++ вы можете также сбрасывать некоторые символы, находить искомое имя функции и затем определять, какой деманглер генерирует правильное исходное имя.

Ответ 4

Попробуйте IDA Pro, который идентифицирует библиотеки и инструменты, используемые для создания исполняемого файла.