Faultless
#08
29 ноября 1997 |
|
Ресторня - основные моменты "ресторизации" взлома и адаптации программ.
"Каждая программа при восстановлении тре- бует собственного подхода, применения фантазии..." STEELER "Рестор иногда не удается ввиду отсутст- вия исходного материала..." SLIDER "Мужики, при желании можно заставить подходящего человека доделать 'исходный материал' и довести дело до конца. Но, повторяю, только при желании..." T.JIM Как бы ни были правы STEELER со SLIDER'om, но можно все же определить основные моменты "ресторизации" программ (только в нашей стране, в ех-СССР, появились SPECTRUM'ы 512к, "теневые мониторы", UFO-2 и проблема восстановления программ, пришедших от друзей из-за рубежа и не только). Во-первых, желательно иметь на руках саму программу, которую предполагается восстановить (ведь можно просто и помечтать о том, какой ты классный хакер-восстановитель). Но с этим, по определению, проблемы возникнуть не должно. Итак, вот перед нами очередной "шедевр". Смотрим, что же в нем не то. Самое первое, что бросается в глаза - это когда программа сбрасывается при попытке запустить ее в режиме 128к (я не говорю о том, что при загрузке мы либо вообще не видим картинки, либо созерцаем нечто неописуемое). Возможны две причины: либо нет дополнительных блоков для расширенной памяти, либо требуется ПЗУ 128к. Если верно последнее, то включайте ПЗУ 128 и радуйтесь,что прога пошла. Если же хотите заработать вечную благодарность пользователей любых компов, то попробуйте переделать код так, чтобы новое ПЗУ не требовалось (кстати, еще больше благодарностей вы заработаете, если не будете пихать 128к only интры в 48/128к игры. Помните, что есть еще те, кто живут своим 48-м Speccy.). А в первом случае, опять же, возможны два пути. Первый: смахнув скупую мужскую слезу, поставить блокировку 128к и ждать, когда же в твои руки попадет нормальная версия (а можно попытаться поискать в самой проге нужный блок. Например, BATMAN 1 был "сброшен" MAGIC'oм в режиме 48к, хотя внутри программы остался блок с музыкой для 128к. Чуток поковырявшись в коде я получил вполне работоспособную 48/128к игру). Второй: если ты извращенец, то можешь попытаться найти еще парочку подобных типов - вместе вы горы свернете... или просто напишете свою, несомненно крутую, музыку, нарисуете новую заставку и... получите псевдо-востановленную игру, а точнее - ремикс. Можете смело ставить свой копилефт рядом с авторским копирайтом и начинать дистрибуцию своего труда. Короче, с дополнительными блоками картина ясна: либо их нет и вы делаете определенные выводы, либо они где-то есть и вы их ищите, чтобы сделать еще более определенные выводы. Первый рубеж пройден. Приходит время, когда вам начинает казаться странным адрес запуска программы - какие-то POP'ы, EI, DI, RET. Знакомо, да? Берем STS (желательно версию 5.хх и выше) и начинаем трассировку. А еще лучше, просто поискать наиболее вероятный адрес запуска. В 95% всех случаев он оказывается вполне годным к употреблению, чем, надеюсь, вы не применете воспользоваться. Но вдруг программа уже испортила какую-то свою отработавшую часть? Это уже чуть сложнее. Конечно, если вы обладаете недюжинным IQ (к сожалению, я к таковым уникумам не отношусь), то сможете "с нуля" восстановить уничтоженное. Иначе... Иначе, вы либо смиряетесь с неизбежным и лишь чуть облагородив процедуру запуска, откладываете это исковерканное чудо в "долгий ящик",т.к. никто не поверит, увидев MAGIC-старт, что игре был сделан restor. Впрочем, можно попытаться все-таки подумать, что же делали те самые CALL'ы, в которых сейчас ничего нет. Иногда на вас может снизойти озарение и вы гордо скажете : "Я! Понял!!!". Или просто обойдете глючные коллы. Насмотревшись и, возможно, разобравшись с запуском, вам стоит подумать над тем, а действительно ли эта программа занимает 50кб из возможных 48-и? На практике оказывается, что это не соответствует истине. Хотя, конечно, следует быть осторожным, т.к. можно запросто удалить кусок графики, а потом в конце игры думать, почему же на экране какой-то мрак. Хорошо, если программа, при обновленном адресе запуска восстановит нужные блоки, а если нет?.. Кстати, не забудьте об указателе стека. Подлая вещь. Ну,запустили. Вроде бы, предстартовая подготовка прошла нормально. Выбираем управление, например, KEMPSTON-джойстик, т.к. переводить испанско-итальянский слэнг вам не с руки. Выбрали, нажали SUGAR и... Ваш герой либо прыгает, как заведенный, либо его палец на спусковом курке свела судорога. Вам повезет, если в игре окажется клавиша ABORTAR, но обычно вы не можете ее обнаружить. А играть на кемпстоне ой как охота... Опять берем STS и ищем нечто похожее на IN A,(#DF). Обычно, достаточно поменять #DF на #1F и можно смело выбирать кемпстон. Редко приходится "мутить", но приходится (Например, в DIZZY-X,Y кемпстон был предусмотрен, однако некорректно было выполнено определение этого устройства. Или возьмем POWER PLAY. Ребята из DIGITAL REALITY могли бы проверить процедуру обработки клавиатуры, но не сделали этого. Я понимаю, что, возможно, не было машины с кемпстоном, но все же...). В таких случаях обычно достаточно подумать минут 5 - и все придумается. Восстановили управление, начали играть, но вдруг перед вами возникли какие-то черточки вместо удобоваримой картинки. Придется разбираться со структурой данных. Работа достаточно емкая и в большинстве случаев необходим индивидуальный подход. Частенько случается, что программа вроде бы "disked by кто-то", но на деле она только грузится с диска, а все возможные промежуточные подгрузки/отгрузки производятся на кассету. Вспоминайте свои навыки по дискофикации программ и вперед, Родина вас не забудет. Только старайтесь, чтобы после доработки, программа не только работала с дисководами, но и вообще работала. Итак, все блоки на месте, с управлением все в порядке, с периферией программа в принципе работает, графика и уровни не запороты, надписи все внутри есть. Наконец, компрессируем игру (к слову, один из наиболее простых случаев restor'а это именно компрессия/перекомпрессия кода. Тут главное не пойти по пути отдельных индивидуумов, для которых восстановление программы заключалось в том, что приписывалось интро, "компрессировалась" ком прессированная игра, не проверялась корректная идентификация режима 128к, всовывались "левые" надписи типа "Дупанов в Трансильвании" и все это распространялось. Лучше просто удалить радостное сообщение "Imported by Rajsoft" и..) И все? Нет, еще не все! А так же CHEAT? A пароли к уровням??? Помимо того, что даже самые отпетые CHEATо-ненавистники ("Повбывав бы!"Slider) привыкли к завлекающим надписям "DO YOU WANNA CHEAT-MODE???", так вам еще и самим надо проверить свою "отресторенную" версию на работоспособность. Вот уже когда все проверено от и до, тогда пакуйте, пишите интро (соответствующее самой игре, т.е. 48/128 для 48/128 игры и 48/128-128к для 128к игры), в котором прославляйте себя, приветствуйте друзей и т.д. Интро тоже пакуйте, проверяйте на правильность распаковки (игр это тоже касается, кстати). Можете даже поставить свою "бэст оф зе бэст" защиту, но только имейте в виду, что ее сразу же снимут. Помните еще об одной мелочи: защита должна работать на всех машинах, а не только на вашем супермонстре, иначе, кому ваша прога нужна будет? Да, а сама она работает на любых Spectrum-клонах? А дополнительные страницы нормально переключаются, не через #FD? В общем, если ответ на все вопросы положителен, смело дописывайте заагрузчик, объединяйте все блоки и... На этом позвольте закончить. Если кто не знает, то с вами был TICKLISH JIM/BROKIMSOFT/AMAZING
Другие статьи номера:
Похожие статьи:
В этот день... 9 октября