Декомпиляция старой программы - PullRequest
2 голосов
/ 02 января 2011

Меня попросили обновить программу, написанную в 1987 году на Delphi (наверное). У меня нет документации по этой программе, только несколько замечаний программиста, которые не имеют особого смысла.

Компакт-диск показывает эти файлы:

Size  |  Filename 
19956    VP.DTA 
142300   VP.LEX 
404      VP.NDX 
126502   VP.RCS 
131016   VP.SCR 
150067   VP.XEL 
101791   vp.exe

Кто-нибудь из этих файлов является базой данных? Если да, могу ли я получить доступ к его данным?

Я пробовал несколько декомпиляторов кода, но они показывают сообщение о том, что это не Win32-совместимое приложение. Программа запускается в MS-DOS.

Возможно ли получить исходный код? Могу ли я использовать этот код для создания нового приложения?

Update01: я могу запустить программу в MS-DOS. Программа сопрягает глаголы и показывает пример предложения, в котором можно использовать глагол. Графический интерфейс немного сбивает с толку, и здесь нет меню справки, поэтому я не вижу всех возможностей программы.

Update02: в разговоре с владельцем программы мы нашли другое решение. Он спрашивает меня, возможно ли иметь программу на сервере, и клиенты могут войти в систему с помощью пользователя и пароля и выполнить программу в терминале. У меня есть учетная запись на моем университетском сервере, к которой я могу получить доступ через ssh, а также компилировать и выполнять на ней c-программы. Сервер находится в Linux, поэтому я не могу попробовать программу на нем. Если я настрою сервер Windows, могу ли я иметь несколько человек, которые получают доступ к программе и выполняют ее в терминале? Программа является exe. Разве это не вызывает проблем с безопасностью?

Ответы [ 6 ]

7 голосов
/ 02 января 2011

Delphi относится к середине девяностых, так что это, вероятно, означает предка Delphi Turbo Pascal, а не Delphi.

Некоторые расширения звучат знакомо, как сокращенные варианты слов:

  ndx = index
  dta = data
  scr = screen (?)
  lex = lexicon (list of words or deduped strings in general) (?)

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

Есть большая вероятность, что это что-то ручное, особенно если эта дата 1987 года и общее предположение "паскаль" верны и вообще не созданы каким-либо известным пакетом базы данных.

Реверсинжиниринг файлового формата может оказаться более целесообразным, чем попытка реинжиниринга приложения.

Хорошим началом будет принятие команды unix "file", чтобы увидеть, может ли она распознавать типы файлов. (команда file ищет сигнатуры внутри файлов, и есть порты Windows. Я использую Cygwin's)

Опытный специалист в таких вопросах также может многое увидеть в hexdump (особенно в первых частях файла)

0 голосов
/ 19 марта 2011

Похоже на CLipper (NDX и SCR).Если у вас есть файл DBF, то это точно Clipper.Но некоторые люди переименовали DBF в нечто вроде DAT.Если это Clipper, я думаю, что там была декомпиляция по имени Valkyrie.

0 голосов
/ 02 января 2011

Это определенно не Delphi.Это может быть один из языков баз данных, таких как Clipper 1 ..SCR, вероятно, означает «экран» и определяет маски ввода / вывода..NDX - это табличный индекс, а .DTA означает «данные».

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

0 голосов
/ 02 января 2011

Ищите DeDe для обратного проектирования скомпилированной программы Delphi.Но, насколько я знаю, Delphi - настоящий компилятор.Так что нет никакого способа декомпилировать это.Если вы можете прочитать ассемблерный код, попробуйте декомпилировать его.Clipper и Foxpro (dos версия) - это еще одна история, потому что они не настоящий компилятор.

0 голосов
/ 02 января 2011

Знаете ли вы, каким должно быть приложение?

Если это ms-dos, вам, вероятно, лучше просто составить новые требования и заняться новыми разработками.

0 голосов
/ 02 января 2011

Возможно ли получить исходный код?

Возможно, нет, вы можете захотеть взглянуть на что-то вроде IDA Pro , которое может разбирать приложения на C с помощьючто-то вроде Hex-Rays .

...