Нет общего алгоритма, но на практике это часто возможно.Обычно вы можете просто посмотреть библиотеки, от которых зависит приложение - например, если приложение Windows зависит, например, от msvcrt.dll , есть большая вероятность, что это программа на C или C ++, скомпилированная с Visual C ++.Иногда компилятор оставляет следы свидетельства в разделе .data
.Вот что я вижу, когда открываю «Hello, World!» - например, двоичный файл Haskell (скомпилированный с GHC) в шестнадцатеричном редакторе:выглядит так:
Опытный глаз может даже распознать версию компилятора, взглянув на разборку (каждый компилятор оптимизирует код немного по-своему и имеет свои особенности реализации).Если вам нужно автоматизировать это, я предлагаю рассмотреть методы машинного обучения.