Как узнать на каком языке написан exe файл

Обновлено: 06.07.2024

У меня есть exe-файл, и я декомпилировал его с Ida. Мне сказали, что программа закодирована на Delphi, поэтому я попытался декомпилировать с DeDe, но это не удалось, без вывода и без ошибок. И мне интересно, можно ли найти язык, используемый при создании exe, попробовав разные декомпиляторы, написанные специально для языка программирования? Или они могут потерпеть неудачу по другой причине?

во многих случаях это is можно определить компилятор, используемый для компиляции кода, и из этого, исходный язык.

большинство языковых реализаций включают в себя некоторую библиотеку времени выполнения для реализации различных операций высокого уровня языка. Например, C имеет CRT, который реализует операции ввода-вывода файлов ( fopen , fread etc.), Delphi имеет помощников компилятора для своего string тип (конкатенация, назначение и другие), ада имеет различный низкоуровневый функции для обеспечения безопасности языка и так далее. Сравнивая код программы и библиотеки времени выполнения компиляторов-кандидатов, вы можете найти совпадение.

IDA реализует этот подход в флирт технологии. Используя подписи, IDA может определить большинство основных компиляторов для DOS и Windows. Это несколько сложнее в Linux, потому что для него нет единого поставщика двоичных файлов компилятора, поэтому подписи должны быть сделаны для каждого дистрибутива.

однако, даже не прибегая к коду библиотеки времени выполнения, можно определить используемый компилятор. Многие компиляторы используют очень разные идиомы для представления различных операций. Например, I смог угадать что компилятор, используемый для вируса Duqu, был Visual C++, который был позже подтвердил.

компиляция-это процесс с потерями, поэтому декомпилировать исполняемый файл (или другой скомпилированный программный модуль, например .so или .dll ) и восстановить исходный код на исходном языке или даже однозначно определить, что такое исходный язык. Даже не обязательно, что существует только один исходный язык исходного кода, поскольку возможно, что до связывания различные модули были написаны на разных языках. Обычно, вы можете, разборки двоичный и восстановить язык сборки, хотя это может иметь очень ограниченное значение.

во многих случаях, вы can рассказать что-нибудь о языке оригинала при условии, что двоичный файл не был лишен (символов). Например, вы обычно можете сказать, был ли двоичный файл первоначально написан в C++, глядя на символы в двоичном файле (в Linux, используя objdump , не знаю, какой эквивалент может быть в Windows): C++ символы искажены определенным образом. Это не 100% гарантия, но высокая вероятность.

тем не менее, некоторые декомпиляторы выполняют довольно разумную работу очень сложной задачи. Вывод вероятных конструкций высокого уровня из двоичного файла непросто. В моем (очень ограниченном) опыте они, как правило, работают для довольно тривиальных программ или для программного обеспечения, скомпилированного с узким диапазоном версий исходного компилятора, но задыхаются от чего-либо существенного: это очень сложно для автор декомпилятора, чтобы идти в ногу с изменениями в компиляторах, и может быть очень мало стимулов для нее сделать это.

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


Как узнать язык на котором написан софт?
Вобщем то сабж. Кто может помочь в етом вопросе. программа

Как узнать какой программой написан этот машинный код
Доброго времени! вот такой вопрос? у меня есть машинный код.и нет исходника. Как узнать какой.

Можно ли узнать, данный EXE-файл написан на VB или нет?
Можно ли узнать, данный EXE-файл написан на VB или нет.

Часто достаточно просто посмотреть в файл, чтобы определить компилятор. А программ много: Программы для анализа исполняемых файлов Модератор жалуеться , но дело не в том чтоб ломать EXE

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

Хм кажется я догадываюсь вот фото
проверял на виртуальной машинке на XP

Спасибо за комент Metall_Version
Думаю это так , есть еще Rad Studia может круто было бы не зависимый сделать ланчоуер
на C++ builder там и формы с горем пополам под Windows 8.1
надеюсь в скорем будущем Native продвиниться и тогда не нужно можно будет собирать независимый код
шарп и ExE и DLL

Какой программой можно проверить жесткий диск?
Какой программой можно проверить винт? Только , чтобы не пришлось записывать ее на флешки/диски.

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

Какой программой можно записать двухслойный диск?
Дано: Кыно в формате DVD-9 на 6гб, болванка DVD-9 (8,5 Гб), ДВД-привод: Plextor PX-716A или.

Какой программой можно перехватить трафик от приложения?
Есть приложение, оно принимает и отправляет пакеты, какой программой их можно перехватить?

Какой программой можно преобразовать SSE в SSE2?
Люди помогите мне нужна прога или что небуть в этом роде что бы проц подерживал последниее игры они.


Какой программой можно отследить и контролировать трафик?
Винда 7 нужна статистика сколько программа/процесс жрет интернет трафика за день,месяц. Антивирус.

Как узнать язык программы, на которой она была написана?

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

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

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

Если вы увидели, что исходный код программы содержит такие операторы, как begin и end, тогда это язык программирования под названием Delphi, который ведет свое начало еще от Паскаля. И если вы посмотрите исходник, написанный на языке Делфи, вы больше не спутаете его с другим.

Распознать язык программы, которая написана в С++, также не представляет особого труда, поскольку у него есть свои характерные черты. Если впервые взглянуть на данный программный код, то перед вашим взором откроется большое количество фигурных скобок. Вместе с тем, для языка С++ характерно наличие комментариев, которые указываются после двойного слеша (//), тем более, что каждый комментарий имеет следующую конструкцию: /* текст комментария */.

Распознать Visual Basic достаточно просто, благодаря своеобразному синтаксису. Аналогично распознается и Ассемблер. Данный язык имеет не столь много уровней, как другие языки программирования. Создавать программы с его помощью достаточно сложно, но полученное в результате приложение имеет небольшой размер и функционирует очень быстро.

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

Чтобы узнать, на каком языке программирования написана программа, воспользуйтесь утилитой PEID, скачать которую вы можете в интернете. Установите ее и запустите. Откройте интересующий вас исполнимый файл. И результат не заставит себя ждать, так как в нижнем окошке появится интересующая вас информация о языке программирования.

спросил(а) 2010-03-11T00:18:00+03:00 11 лет, 8 месяцев назад

Я сталкивался с этой проблемой раньше. Я только что открыл файл .exe в блокноте. Я нашел имя и версию компилятора. Надеюсь, это поможет кому-то.

ответил(а) 2014-06-19T03:16:00+04:00 7 лет, 5 месяцев назад

Мне придется противоречить всем, кто заявляет что-либо в соответствии с "Компиляция языка высокого уровня в низкоуровневый .EXE, как правило, односторонний процесс". Поскольку не все исполняемые файлы скомпилированы для необработанной сборки.

Если файл был скомпилирован непосредственно в raw-сборку, обычно в описании синтаксиса/структуры обычно указывается исходный язык. Хотя это скорее побочный продукт компилятора, а затем сам язык.

Компиляция языка высокого уровня в низкоуровневый .EXE обычно является односторонним процессом - практически невозможно надежно извлечь значимую информацию из исполняемого файла относительно исходного языка после завершения процесса. Вам может повезти и найти некоторые идентифицируемые реплики, оставшиеся в двоичном формате, или, конечно же, найти сопроводительный файл (например .pdb), который дает подсказки относительно исходного языка.

Однако то, что содержит .EXE, это (как правило) язык ассемблера, и это иногда можно декомпилировать обратно в представление на высоком уровне программы. Обратите внимание, что это никогда не даст вам точный исходный файл с инструкцией - результат, вероятно, будет очень "многословным" и будет трудно следовать, просто из-за того, что сделал компилятор в первую очередь, - который превратился в высокоуровневый "концептуальный" сложный язык в поток инструкций низкого уровня, отбрасывая большинство контекстных сигналов, которые не нужны для выполнения ЦП кодом.

ответил(а) 2010-03-11T00:31:00+03:00 11 лет, 8 месяцев назад

У меня есть .exe файл, и мне нужно знать, на каком языке была разработана программа.


В общем случае это невозможно. Каждый язык мог бы составить свою версию "Привет, мир!". таргетинг на определенную платформу (или исполняемый формат) на один и тот же исполняемый файл (байт для байта).

А также есть трюк для просмотра кода (на основе этого .exe файла)?


У меня есть настольная программа, которую я скачал и установил. Он запускается из файла .exe.

Есть ли какой-нибудь способ узнать из файла .exe, какой язык программирования использовался для написания программы?

Есть ли какие-нибудь инструменты, чтобы помочь с этим?

Какие языки можно определить, а какие нет?

Хорошо, вот две вещи, которые я ищу:

Я понимаю ваше любопытство.

Вы можете определить приложения Delphi и C ++ Builder и их SKU, просмотрев несколько конкретных ресурсов, которые добавляет компоновщик. В частности, RC Data \ DVCLAL и RC DATA \ PACKAGEINFO. XN Resource Editor значительно упрощает эту задачу, но может подавиться сжатым EXE.

Компрессоры EXE немного усложняют дело. Они могут скрывать или шифровать содержимое ресурсов. Программы, сжатые с помощью UPX, легко идентифицировать с помощью HEX editor, потому что первые 2 раздела в заголовке PE имеют имена UPX0 и UPX1. Вы можете использовать приложение, чтобы распаковать их.

Я не смотрел некоторые приложения, которые используют сигнатуры для идентификации компилятора, поэтому не знаю, насколько хорошо они работают.

Надеюсь, это поможет.

Я использую WinDowse (небольшую бесплатную утилиту, написанную на Delphi) для шпионить за окнами программы . например, если вы посмотрите на Таблицу "Класс", вы можете обнаружить имя "Класс" элемента управления ..

Я считаю, что это самый быстрый (хотя и не самый точный ) способ найти информацию о приложениях.

Во-первых, посмотрите, какие библиотеки времени выполнения он загружает. Программа на C обычно не загружает библиотеку Visual Basic.

Также проверьте исполняемый файл на наличие контрольных строк. В большинстве исполняемых файлов это почти конец. Если программа использует строковые константы, это может указывать на то, как они хранятся.

Хороший дизассемблер, плюс, конечно, отличное понимание базовой архитектуры ЦП, часто могут помочь вам определить используемые библиотеки времени выполнения. Если исполняемый файл не был тщательно «лишен» символов и / или замаскирован иным образом, имена символов, видимые в библиотеках времени выполнения, часто будут давать вам подсказки на языке программирования, потому что стандарты разных языков определяют разные имена, а поставщики компиляторов и сопутствующих библиотеки времени выполнения обычно очень строго соблюдают эти стандарты.

Конечно, вы не добьетесь этого без знания различных возможных языков и их библиотечных стандартов - и если автор кода намеревался замаскировать информацию, им это тоже не сложно сделать.

Если у вас есть большой набор примеров из известных компиляторов, я думаю, это будет отличное приложение для машинного обучения. Я считаю, что здесь уместно так называемое «обучение с учителем». К сожалению, я почти ничего не знаю по этой теме - только то, что я слышал впечатляющие результаты, представленные на конференциях.

Вы можете покопаться в материалах Рабочей конференции по обратному проектированию , чтобы узнать, интересуется ли эта проблема еще кем-нибудь.

Предполагая, что это приложение для Windows .

Нужен ли интпредставитель (например, Java?)? Тогда это Java (или другой интерпретатор.)

Проверьте, какие библиотеки DLL времени выполнения требуются.

Требуются ли DLL-библиотеки времени выполнения VB? Поздравляем, VB из VisualStudio 6.0 или более ранней версии.

Требуются ли для этого библиотеки Delphi? Поздравляю, Дельфи.

Вы зашли так далеко? C / C ++. Предположим, C ++, если он не требует msys или cygwin dll, и в этом случае C имеет вероятность 25%.

Поздравляем, это должно быть верным для подавляющего большинства программного обеспечения Windows. Это, вероятно, на самом деле вам не поможет, так как на всех этих языках можно сделать много одинаковых вещей.

please delete meplease delete me 3 Янв 2010 в 00:29

Начните с различных опций в dumpbin. Имена символов, если их не стереть, дадут вам всевозможные подсказки относительно того, C, C ++, CLR или что-то еще.

Другие инструменты используют сигнатуры для идентификации компилятора, используемого для создания исполняемого файла, например PEiD, CFF Explorer и другие.

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

Обозреватель сигнатур из CFF Explorer может дать вам представление о том, как подпись построена.

Похоже, компоновщик VC ++ от V6 до добавляет подпись к заголовку PE, который вы можете проанализировать.

Я предлагаю PEiD (бесплатное программное обеспечение, с закрытым исходным кодом). Имеет все подписи Delphi для Win32, также может сказать вам, какой упаковщик использовался (если есть).

Читайте также: