декомпиляция — ZXNet «code.zx»

декомпиляция

ZXNet echo conference «code.zx»



from: Сергей Билибин
to: All
date: 5 February 2007
Hello, All когдато давно, лет 8 - 9 назад я писал всевозможные програмки и игрульки для себя. писал их на бейсике с применением граф.редактора Art Studio и компилятора Tobos FP. вот недавно я посписывал всё это добро с касет и хотел бы снова поковыряться в своих произведениях. в общем вопрос такой: можно ли как нибудь превести из машинного кода программы назад в бейсик? если да то как? для примера выкладываю пару своих произведений :) Файл: game.rar http://zx.pk.ru/attachment.php?attachmentid=4547

from: deathsoft
to: All
date: 5 February 2007
Hello, ZEman ZEm> можно ли как нибудь превести из машинного кода программы назад в ZEm> бейсик? Если нету исходных бэйсик файлов (из которых Tobos FP получил машинный код), то никак, а если они есть в образах касет, то см. пункт ниже.

from: deathsoft
to: All
date: 5 February 2007
Hello, ZEman Скачать вот эту прогу (ZX-Blockeditor) http://home.arcor.de/clausjahn/spectrum/. После чего выдрать все файлы с бэйсиком и кодом в виде отдельных файлов, дальше их можно засунуть в .trd/.scl

from: Dmitry Malychev
to: All
date: 6 February 2007
Hello, cyrax inc cyr> есть выражение: мяса из котлет не восстановишь и фарш не провернуть cyr> назад... Переврал немного. :) Это такая песня-пародия на Пугачиху.

from: Алексей Михеев
to: All
date: 6 February 2007
Hello, ZEman ZEm> исходных бейсик файлов нету, стёр давным-давно.. ZEm> а так значит никак нельзя? ZEm> ведь компилятор же перводит из бейсика в машинный код, почему нельзя ZEm> сделать процесс наоборот? как компилятор перевел исходную бейсик-программу в машкод одним только авторам тобоса и известно. есть выражение: мяса из котлет не восстановишь и фарш не провернуть назад...

from: Сергей Билибин
to: All
date: 6 February 2007
Hello, deathsoft исходных бейсик файлов нету, стёр давным-давно.. а так значит никак нельзя? ведь компилятор же перводит из бейсика в машинный код, почему нельзя сделать процесс наоборот?

from: deathsoft
to: All
date: 6 February 2007
Hello, goodboy goo> если бы переводил зачем тогда нужен сам Tobos в памяти для работы goo> проги ? Скорее всего используются процедуры не из ПЗУ, а из самого Tobos'а, тоже самое касается, например, MegaBasic'а. Вполне возможно, что Tobos работает как старые версии VisualBasic (до 5.0) на PC (компилирует в байт код), а наличие Tobos'а требуется для исполнения этого байткода (по сути это виртуальная машина).

from: goodboy
to: All
date: 6 February 2007
Hello, ZEman ZEm> ведь компилятор же переводит из бейсика в машинный код ничего в маш.код он не переводит, операторы бейсика переводятся в хитрый формат который быстрее передаётся ПЗУшным процедурам, только и всего если бы переводил зачем тогда нужен сам Tobos в памяти для работы проги ?

from: Станислав Ломакин
to: All
date: 6 February 2007
Hello, goodboy goo> ничего в маш.код он не переводит, операторы бейсика переводятся в goo> хитрый формат который быстрее передаётся ПЗУшным процедурам, только и goo> всего goo> goo> если бы переводил зачем тогда нужен сам Tobos в памяти для работы goo> проги ? так-то оно так. но что это за формат, и насколько сложно восстановить из него бейсик, есть большая природная загадка :rolleyes; хотя; по идее вполне разрешимая

from: deathsoft
to: All
date: 7 February 2007
Hello, EARL Visual Basic 3 и 4 декомпилировался полностью, также декомпилировались языки типа Clipper (под ДОС). Причем были очень хорошие декомпилеры, которые восстанавливали полноценный исходник.

from: Дмитрий Лимонов
to: All
date: 7 February 2007
Hello, deathsoft dea> Скорее всего используются процедуры не из ПЗУ, а из самого Tobos'а, dea> тоже самое касается, например, MegaBasic'а. dea> dea> Вполне возможно, что Tobos работает как старые версии VisualBasic (до dea> 5.0) на PC (компилирует в байт код), а наличие Tobos'а требуется для dea> исполнения этого байткода (по сути это виртуальная машина). Да очень на то похоже. Я как-то разбирался с этим компилятором, когда хотел декомпилировать игру Tank war, чтобы немного переписать и заметил, что там действительно все команды представляются в виде 16 битных адресов обработчиков команд бейскика. Часть этих команда находится в ПЗУ бейсика, а часть переписана и расположена в самом компиляторе. Сейчас точно не помню, но есть такая мысль, что можно даже имена переменных восстановить, которые компилятор бережно сохраняет в начале результирующего кода. Даже конструкции вида: ┌─- CODE ─── GOTO label └── CODE ─── где label - переменная можно восстановить, потому что когда компилятор встречает такой GOTO, то он сохраняет в все нормера строк в виде адресов байт-кодов результирующей программы, т.е. создается специальная таблица по которой можно восстановить даже сколько и какие операторы были в строке. :cool: