Здравствуйте.
В один прекрасный зимний вечер обратился ко мне товарищ - мол, выручи, друг, тут есть программа, из которой мне нужно вытащить формулы, других источников нет.
Программа написана на Турбо Паскале: синенькое окошко с несколькими шагами и исключительно текстовым выводом(через WriteLn и SetCursorPosition int 10) и вводом через Intr.
Ida распознала exeшник как NewExe(Os/2), нормально выдала диззасембли. Hex-Rays отказывается декомпилировать 16 бит. В коде очень много вычислений через FPU и в связи с этим вопросы:
1) Как это дело отлаживать? Turbo Debugger рушится внутри int 2F. (эмулятор DosBox). Вариант с отладкой по сети очень медленный - кода очень много. Хотелось бы отдельный отладчик под винду с возможность взаимодействовать с ДОС эмулятором.
2) Есть ли какие-нибудь плагины для ида, которые бы преобразовывали ассемлерный код в удобочитаемые формулы?
3) Есть ли какой-нибудь декомпилятор для 16битных NE.ExE программ?
The original SoftICE for DOS was written in 1987 by NuMega founders Frank Grossman and Jim Moskun. The program, written in 80386 assembly language, played the role of an operating system and ran software in virtual 8086 mode. It sold for $386.
SoftICE/W (for Windows) was developed in the 1990s, and was instrumental in the Writing of "Undocumented Windows", by Andrew Schulman, David Maxey and Matt Pietrek.
abcyu: когда использую td и дело доходит до отображения, на экран выплевывается каша из символов и отладчик рушится . Причем пробовал ставить брейкпойнты на различные адреса, где программа ну точно уж должна пробегать - не ловит.
iCune: DOS программы, а тем более в отладчике, работают очень плохо на ряде платформ. Пробуйте разные типы виртуалок, пробуйте реальное железо, попробуйте разные типы отладчиков. Думаю, найти древний компьютер за "самовывоз" вообще не проблема.
Если у вас программа для real mode 86 - вам повезло.
Если у вас программа для protected mode 286 - всё хуже.
iCune:
Искать момент перехода в protected mode.
Он делается загрузчиком runtime-системы где-то в начале работы программы.
Если вы просто добрались до самого начала программы и нормально выполнили хотя бы первый оператор, написанный автором программы, а не автором runtime, то ваша программа вряд ли сделана для protected mode.
abcyu: значит protected( Так как exeшник - формата New Executable и до программы я так и не добрался. Если не делать трейс инстуркций, программа запускается после int 2Fh/
iCune: насколько помню, для Protected Mode еще нужен дополнительный файл DPMIчего-то там. Если у вас и без этого файла запускается, то это может быть и обычный режим.
Если это Turbo Pascal есть шансы, что в иде есть соответствующие сигнатуры для FLIRT. Не работает отладка в виртуалке - отлаживайте на реальном железе.