PDA

Просмотр полной версии : декомпиляция



ZEman
05.02.2007, 18:52
когдато давно, лет 8 - 9 назад я писал всевозможные програмки и игрульки для себя.
писал их на бейсике с применением граф.редактора Art Studio и компилятора Tobos FP.
вот недавно я посписывал всё это добро с касет и хотел бы снова поковыряться в своих произведениях.
в общем вопрос такой:
можно ли как нибудь превести из машинного кода программы назад в бейсик?
если да то как?
для примера выкладываю пару своих произведений :)

deathsoft
05.02.2007, 21:00
Скачать вот эту прогу (ZX-Blockeditor) http://home.arcor.de/clausjahn/spectrum/. После чего выдрать все файлы с бэйсиком и кодом в виде отдельных файлов, дальше их можно засунуть в .trd/.scl

deathsoft
05.02.2007, 21:02
можно ли как нибудь превести из машинного кода программы назад в бейсик?
Если нету исходных бэйсик файлов (из которых Tobos FP получил машинный код), то никак, а если они есть в образах касет, то см. пункт ниже.

ZEman
06.02.2007, 06:35
исходных бейсик файлов нету, стёр давным-давно..
а так значит никак нельзя?
ведь компилятор же перводит из бейсика в машинный код, почему нельзя сделать процесс наоборот?

cyrax inc
06.02.2007, 07:13
исходных бейсик файлов нету, стёр давным-давно..
а так значит никак нельзя?
ведь компилятор же перводит из бейсика в машинный код, почему нельзя сделать процесс наоборот?
как компилятор перевел исходную бейсик-программу в машкод одним только авторам тобоса и известно. есть выражение: мяса из котлет не восстановишь и фарш не провернуть назад...

Lethargeek
06.02.2007, 09:39
есть выражение: мяса из котлет не восстановишь и фарш не провернуть назад...
Переврал немного. :) Это такая песня-пародия на Пугачиху.

goodboy
06.02.2007, 16:40
ведь компилятор же переводит из бейсика в машинный код
ничего в маш.код он не переводит, операторы бейсика переводятся в хитрый формат который быстрее передаётся ПЗУшным процедурам, только и всего

если бы переводил зачем тогда нужен сам Tobos в памяти для работы проги ?

boo_boo
06.02.2007, 18:06
ничего в маш.код он не переводит, операторы бейсика переводятся в хитрый формат который быстрее передаётся ПЗУшным процедурам, только и всего

если бы переводил зачем тогда нужен сам Tobos в памяти для работы проги ? так-то оно так. но что это за формат, и насколько сложно восстановить из него бейсик, есть большая природная загадка :rolleyes:
хотя по идее вполне разрешимая

deathsoft
06.02.2007, 18:48
если бы переводил зачем тогда нужен сам Tobos в памяти для работы проги ?
Скорее всего используются процедуры не из ПЗУ, а из самого Tobos'а, тоже самое касается, например, MegaBasic'а.

Вполне возможно, что Tobos работает как старые версии VisualBasic (до 5.0) на PC (компилирует в байт код), а наличие Tobos'а требуется для исполнения этого байткода (по сути это виртуальная машина).

EARL
07.02.2007, 12:39
Скорее всего используются процедуры не из ПЗУ, а из самого Tobos'а, тоже самое касается, например, MegaBasic'а.

Вполне возможно, что Tobos работает как старые версии VisualBasic (до 5.0) на PC (компилирует в байт код), а наличие Tobos'а требуется для исполнения этого байткода (по сути это виртуальная машина).
Да очень на то похоже. Я как-то разбирался с этим компилятором, когда хотел декомпилировать игру Tank war, чтобы немного переписать и заметил, что там действительно все команды представляются в виде 16 битных адресов обработчиков команд бейскика. Часть этих команда находится в ПЗУ бейсика, а часть переписана и расположена в самом компиляторе. Сейчас точно не помню, но есть такая мысль, что можно даже имена переменных восстановить, которые компилятор бережно сохраняет в начале результирующего кода. Даже конструкции вида:

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

deathsoft
07.02.2007, 12:58
Visual Basic 3 и 4 декомпилировался полностью, также декомпилировались языки типа Clipper (под ДОС). Причем были очень хорошие декомпилеры, которые восстанавливали полноценный исходник.