Как найти язык, из которого был скомпилирован исполняемый файл? - PullRequest
0 голосов
/ 16 сентября 2011

При наличии исполняемого файла приложения (Windows, Linux или Mac OS X), есть ли способ выяснить язык программирования, который использовался для написания этого приложения?

Ответы [ 3 ]

0 голосов
/ 16 сентября 2011

Весьма маловероятно, если с ним не связаны какие-либо конкретные метаданные или какая-то особенность языка, связанная с этим exe-файлом.Исполняемые файлы - это (обычно) код, скомпилированный для конкретной платформы или промежуточный код, который будет точно скомпилирован для определенного языка.В случае JIT-кода вы можете определить, является ли его .NET или какой-либо другой язык, который производит промежуточный код, но по большей части, это довольно трудной и неразумной задачей.Я могу ошибаться, но, насколько я понимаю, это невозможно.

0 голосов
/ 16 сентября 2011

Я мог бы также добавить поздний ответ.

Даже если компилятор для данного языка программирования решит выбросить некоторые метаданные, такие как символы, в раздел данных с сообщением типа «Скомпилировано из C Джо».версия компилятора 4.1.104 «ничего - ничто вообще не мешает мне написать компилятор Go, который записывает одно и то же сообщение в то же место в разделе данных, чтобы обмануть ничего не подозревающих людей, смотрящих на исполняемый файл.

Не говоря уже оСуществует бесконечное количество компиляторов, которые могут быть написаны для любого данного языка.

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

Ответ - просто нет.

TL; DR: Вы всегда можете подделать.

0 голосов
/ 16 сентября 2011

В общем случае я бы подумал, что нет. Однако в конкретном случае это может быть возможно.

...