ZXNet эхоконференция «code.zx»


тема: декомпиляция



от: Сергей Билибин
кому: All
дата: 05 Feb 2007
Hello, All

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

Файл: game.rar http://zx.pk.ru/attachment.php?attachmentid=4547

от: deathsoft
кому: All
дата: 05 Feb 2007
Hello, ZEman

ZEm> можно ли как нибудь превести из машинного кода программы назад в
ZEm> бейсик?

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

от: deathsoft
кому: All
дата: 05 Feb 2007
Hello, ZEman

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

от: Dmitry Malychev
кому: All
дата: 06 Feb 2007
Hello, cyrax inc

cyr> есть выражение: мяса из котлет не восстановишь и фарш не провернуть
cyr> назад...

Переврал немного. :) Это такая песня-пародия на Пугачиху.

от: Алексей Михеев
кому: All
дата: 06 Feb 2007
Hello, ZEman

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

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

от: Сергей Билибин
кому: All
дата: 06 Feb 2007
Hello, deathsoft

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

от: deathsoft
кому: All
дата: 06 Feb 2007
Hello, goodboy

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

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

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

от: goodboy
кому: All
дата: 06 Feb 2007
Hello, ZEman

ZEm> ведь компилятор же переводит из бейсика в машинный код

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

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

от: Станислав Ломакин
кому: All
дата: 06 Feb 2007
Hello, goodboy

goo> ничего в маш.код он не переводит, операторы бейсика переводятся в
goo> хитрый формат который быстрее передаётся ПЗУшным процедурам, только и
goo> всего
goo>
goo> если бы переводил зачем тогда нужен сам Tobos в памяти для работы
goo> проги ?

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

от: deathsoft
кому: All
дата: 07 Feb 2007
Hello, EARL

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

от: Дмитрий Лимонов
кому: All
дата: 07 Feb 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:




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Армейские приколы - А вдpуг война или какое дpугое меpопpиятие?
Савалка - в приложении вы найдете некое фото. Так знайте на этом фото - я!
Раскрутка - Новелла к игре "Trap Door".
Лоцман - новелла по игре "Бегство на Хархан" (предистория от AiR'a).
Реклама - реклама и объявления.

В этот день...   26 апреля