Как узнать на каком языке написана программа

Как узнать на каком языке написана программа

Задачка у меня такая.
Есть некий DOS файл с расширением .exe, необходимо узнать на каком языке это написано, чтобы потом найти програмку декомпилятор и посмотреть исходники.
Кто знает такие програмки которые определяют по exe на чем он написан.


vopros ( 2002-12-15 13:19 ) [1]

в текстовом редакторе посмотри в конце файла.


SZap ( 2002-12-15 13:21 ) [2]

vopros
и что я там должен увидеть.


han_malign ( 2002-12-15 13:29 ) [3]

Чип & файл — новости компьютерного мира. Выпуск
18.
фрагмент:
Восстановление исходного текста программы на языке высокого уровня — давняя
и недостижимая мечта человечества. Но кое-чего все же можно добиться.
Во-первых, с помощью IDA определяются названия многих функций, но только
библиотечных. Во-вторых, для программ, созданных некоторыми
компиляторами, есть утилиты, позволяющие восстановить либо исходный текст,
либо другую информацию, которая пригодится при взломе. Например,
восстанавливаются формы, компоненты и их свойства и адреса обработчиков
событий. Это существенно экономит время, требуемое на взлом. Например, Refox
для языка FoxPro, VBDE и Visual Basic 3 Decompiler для языка Visual Basic, EXE2DPR
и DeDe для Delphi. DeDe также работает с программами откомпилированными в
C++ Builder.


Alx2 ( 2002-12-15 13:32 ) [4]

>SZap (15.12.02 13:18)
Для DOSовских программ поищи intruder.exe


SZap ( 2002-12-15 13:35 ) [5]

han_malign
спасибо конечно, но как мне всетаки определить на каком языке был написан данный exe.


vopros ( 2002-12-15 13:35 ) [6]

Всякий хлам среди которых есть названия функций.


Anatoly Podgoretsky ( 2002-12-15 13:38 ) [7]

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

Читайте также:  Индикатор hdd постоянно горит


han_malign ( 2002-12-15 13:48 ) [8]

для 32-битных Delphi и CBuilder в ресурсе лежат специальная инфа, для ДОС-программ скорее всего ни фига нет(однозначно можно определить только программы защищенного режима, по раширителю, для Borland Pascal — rtm, для Watcom C — dos4gw, для MS — фиг знает), тут поможет только метод научного тыка(качаешь очередной dasm и пробуешь что получится).


AL2002 ( 2002-12-16 10:33 ) [9]


Karbo ( 2002-12-16 10:58 ) [10]

Напиши сам минимальные программы на Turbo Pascal, С++ и Basic, ( BEGIN END. будет достаточно),посмотри полученные exe-шники каким-нибудь Norton Disk Edit и найди по 12 отличий. Наверняка найдешь какую-нибудь ботву типа "Borland#$%"


Anatoly Podgoretsky ( 2002-12-16 11:04 ) [11]

А теперь к этому добавь Uses . и между BEGIN END вызовы

В общем случае задача нерешаема.

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

К примеру в составе 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, которая может по сигнатурам (специфичным участкам кода) определять компилятор, но к сожалению она уже не развивается и не определяет современные компиляторы.

Читайте также:  Baidu browser русская версия windows 7

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

ЗЫ:
А собственно зачем это нужно? Если программа работает, не все ли равно на чем она написана?

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

Формулировка задачи

  • нужно по фрагменту текста определить его язык. Длина фрагмента — от нескольких слов до нескольких десятков предложений. Это может быть связный текст или, например, заголовок статьи;
  • текст дан в кодировке UTF-8;
  • набор интересующих меня языков жестко задан. Количество языков — 5..10. В рабочем приложении можно даже ограничиться меньшим количеством, чтобы увеличить точность определения;
  • текст может содержать включения других языков. Нужно определить основной (более 60% слов, например);
  • для моей задачи не всегда нужно точно определять. Например, чаще всего не нужно различать украинский и русский;
  • автор текста знает язык, на котором пишет.

Существующие решения не подходят. Проблема в том, что их делали математики и программисты. Эти решения, в основном, анализируют один параметр и выдают странные вероятности того, что текст написан на каком-то языке. А мне нужны не вероятности. Мне нужно язык определить :-). Вторая проблема — статистические алгоритмы разваливаются на текстах, содержащими включения других языков.

Думаю, нужно последовательно анализировать много параметров.

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

Читайте также:  Как отправить музыку голосовым сообщением вк

Алгоритм моих действий примерно такой:

  • смотрю на набор символов, которые встречаются в словах. Причем, именно по словам, а не по всему тексту, т.к. в тексте могут быть «иностранные» слова. На этом этапе уже можно исключить две трети языков.
  • ищу характерные союзы и предлоги — по ним можно разделить языки с одинаковым набором символов
  • пытаюсь прочитать текст, исходя из предположения, что он написан на языке, который определился. Мне сложно сказать, что происходит на этом этапе… Думаю, это сложный анализ грамматики языка. Я распознаю известные мне слова, проверяю окончания.

Несколько примеров несостоятельных алгоритмов

В полиграммной модели со степенью n и основанием M текст представляется вектором i>, i = 1..M n , где fi – частота встречаемости i-ой n-граммы в тексте.n-грамма является последовательностью подряд идущих n – символов вида a1…an-1an.

— нихрена не понял

Дальше искать не стал.

Пример состоятельного алгоритма

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

Еще у меня есть странное желание проделать это на стороне клиента, с использованием javascript. Не думаю, что анализ нескольких слов требует обращения к Google Language API…

В итоге использовал Google Language API… Подозреваю, что в спорных случаях они используют поиск по словарю, а я этого не могу себе позволить на стороне клиента.

Ссылка на основную публикацию
Как удалить файл php
Как удалить файл с моего сервера с помощью PHP если файл находится в другой директории? вот мой макет страницы: projects/backend/removeProjectData.php...
Как создать словарь в word
Меня интересует вот такая тема: когда печатаешь текст на компе, например, с ошибкой правописания, появляется подсказка - как правильно надо....
Как создать таблицу на компьютере
Как создать таблицу в Word? Сейчас я просто не представляю, как можно работать без такой нужной и полезной программы, как...
Как удалить файл если он используется
Не редко встречаются ситуации, когда нужно удалить файл, но Windows сообщает, что файл занят другим процессом. Это может быть важный...
Adblock detector