Другие языки программирования и технологии

как узнать в какой среде написана программа?

Рахат Задрот
Рахат Задрот
2 527
В общем случае задача нерешаема.

Однако в некоторых частных случаях вполне можно определить, каким компилятором была скомпилирована программа.

К примеру в составе mingw есть утилита strings способная извлекать из исполняемого файла текстовые строки. Если программа создана сишным компилятором от микросовта можно найти строку:
Visual C++ CRT

если GCC:
Mingw runtime

если Free Pascal:
FPC 2.6.0
и т. д.

Программы Delphi/Borland C++ Builder часто тянут с собой runtime (всякие dll), в названии которого есть слово "borland".

Программы на C#, VB.NET, С++/CLI тянут .net framework и без него просто не работают.

Упакованные в exe программы на скриптовых языках типа tcl, ruby, python, php можно распаковать и в некоторых случаях даже посмотреть исходники.

Кроме того есть утилита PEiD, которая может по сигнатурам (специфичным участкам кода) определять компилятор, но к сожалению она уже не развивается и не определяет современные компиляторы.

Поделки криворуких говнокодеров на Delphi/Borland C++ Builder можно спокойно определить на глаз по кривости интерфейса, но если программу в этих средах писал нормальный программист, то на глаз не получится.

ЗЫ:
А собственно зачем это нужно? Если программа работает, не все ли равно на чем она написана?
Асылбек Турарбеков
Асылбек Турарбеков
60 099
Лучший ответ
дизассемблером его и посмотреть какие операнды
Никак. Можно попытаться узнать, каким компилятором она была скомпилирована, но вот был ли вызван компилятор из командной строки, из блокнота или из какой то IDE’шки узнать не возможно.
Петро Шмалій
Петро Шмалій
37 556
В нетрезвой
Антон Цезарь
Антон Цезарь
16 609