3.2Работа со встроенными машинными кодами.
Впредыдущей статье мы с Вами рассмотрели, как блокировать действие защитных управляющих кодов. (Для этих целей была использована специальная программа, существуют и другие способы просмотра, которым будет посвящена следующая статья данного пособия). Однако просмотра содержимого одного лишь Бейсика бывает явно недостаточно для анализа принципа работы программы в целом и становится необходимым изучение встроенных в Бейсик машиннокодовых процедур. Именно этому вопросу и посвящен данный раздел.
Прежде, чем приступать к работе, нам необходимо определиться с целью, которую вы преследуете при вскрытии процедуры в машинных кодах. Если Вы хотите осуществить какие либо изменения, то Вам необходимо достаточно кропотливое изучение каждого программного блока. В том случае, если Вы просто изучаете принципы программирования тех или иных авторов, то на первое место по степени приоритетности выступает анализ общей структуры программы.
Здесь мы постараемся рассмотреть оба подхода с тем, чтобы иметь представление о каждом из них. Многие из Вас, уважаемые читатели, наверняка сталкивались с программами, вскрытыми хаккерами. Наиболее известным из них является BILL GILBERT, поскольку программы, вскрытые им, получили наибольшее распространение. И многие из Вас наверняка пытались пробраться сквозь дебри его защиты, чтобы попытаться изменить что либо, или же просто понять ее принцип действия.
Возможно, что это удалось не всем. Однако, не огорчайтесь. Сегодняшний пример мы построим на исследовании программы, вскрытой этим хаккером, а в последующих выпусках исследуем приемы этого взломщика еще более подробно.
Вэтой статье мы рассмотрим применение процедур в машинных кодах для защиты программ на примере игры GAME OVER (IMAGINE/DINAMIC). Судя по дате, проставленной хаккером, эта программа была взломана им в 1987 году.
Для того, чтобы с наименьшими усилиями вскрывать программы Билла Гилберта, необходимо уяснить несколько деталей его специфической защиты. В будущем это может очень сильно пригодиться. Так, практически все программы, вскрытые этим хаккером, не имеют защиты от BREAK, т.е. программу можно остановить, нажав клавишу BREAK.
Второе почти все программы в связи с отсутствием защиты от BREAK, имеют мощную защиту от листинга. В большинстве случаев используются защитные POKES совместно с методом зануления и совместно со встроенными процедурами в машинных кодах. Причем, во многих случаях бывает невозможно работать с программой, не блокировав защитные POKES.
И третье буквально все программы, вскрытые им, имеют защиту от MERGE, аналогичную описанной Главе 3 первого тома.
Защита от MERGE необходима для того, чтобы не удалось достаточно легко блокировать систему защитных POKES.
Зная эти три особенности, будем грамотно осуществлять взлом, не оставляя без внимания ни одну из них. Наиболее разумным методом ввода первого Бейсик файла в компьютер является ввод его через программу блокировки автозапуска, рассмотренную в разделе 2.3 второго тома. Тогда защитные POKES ни оказали бы никакого влияния на просмотр листинга данной программы. Однако, можно ввести данный Бейсик файл и просто подав команду LOAD "" . После его загрузки остановить работу программы нажатием
- BETA BASIC
- ГЛАВА 1. ВВЕДЕНИЕ
- ГЛАВА 2. РЕДАКТИРОВАНИЕ
- Курсор текущей строки
- Команда LIST FORMAT
- Команда CSIZE
- Команды JOIN <номера строк> и SPLIT.
- Управляющий код "новая строка".
- ГЛАВА 3. ПРОЦЕДУРЫ
- Передача параметров списком
- ГЛАВА 4. СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ
- ГЛАВА 5. ОБРАБОТКА ДАННЫХ
- ГЛАВА 6. ГРАФИКА
- ЗАЩИТА ПРОГРАММ
- ЧАСТЬ 1
- ГЛАВА 1. Исключение возможности остановки программ.
- 1.1. Общие рекомендации.
- 1.6. Метод защиты, используемый в программе FIST III.
- 2.3. Использование управляющих кодов.
- 40 ЛУЧШИХ ПРОЦЕДУР
- РАЗДЕЛ А
- 1. ВВЕДЕНИЕ
- Общие сведения о Бейсике и машинных кодах
- 2. ВНУТРЕННЯЯ СТРУКТУРА ZX SPECTRUM
- Карта памяти
- Атрибуты
- Буфер принтера
- Область программ на BASICe
- 5.Подпрограммы сдвига.
- 5.1Сдвиг атрибутов влево.
- 5.5 Сдвиг влево на один символ.
- МАСТЕРФАЙЛ 09 полная русификация.
- ВСТУПЛЕНИЕ.
- 3. Перевод программы на русский язык.
- POKES
- POKES
- NETHER EARTH
- HEAD OVER HEELS
- BETA BASIC
- РАЗДЕЛ 2. КОМАНДЫ
- 1. ALTER <атрибуты> ТО атрибуты
- 2. ALTER <ссылка> ТО ссылка
- 7. CLS <номер окна>
- 8. CONTROL CODES (управляющие коды)
- 12. DEF KEY односимвольная строка; строка
- ЗАЩИТА ПРОГРАММ
- ПРОГРАММА ДЛЯ СНЯТИЯ ЗАЩИТ
- Глава 3. Методы защиты от MERGE
- 40 ЛУЧШИХ ПРОЦЕДУР
- 5.8 Сдвиг вниз на один символ.
- 5.12 Сдвиг вниз на один пиксел.
- 6.ДИСПЛЕЙНЫЕ ПРОГРАММЫ
- 6.1 Слияние картинок
- 6.2. Инвертирование экрана.
- 6.6 Изменение атрибута.
- 6.9 Построение шаблонов.
- Текстовые сообщения программы MF 09 и их перевод
- ЗАКЛЮЧЕНИЕ.
- 0. Torneo
- SNOOKER
- Правила игры.
- FORUM
- Версия 1.
- Версия 2.
- Версия 3
- Перелеты к двойным звездам и невидимым звездам.
- Тайные возможности компьютера.
- СПЕКТРУМ В ШКОЛЕ
- BETA BASIC
- 22. EXIT IF <условие>
- 23. FILL x,y
- 28. KEYIN строковая переменная
- 29. KEYWORDS число.
- ЗАЩИТА ПРОГРАММ
- Глава 4. Прочие приемы защиты.
- 4.1Запуск программ в кодах.
- Глава 1. Введение
- Общие рекомендации.
- Глава 2. Блокировка автозапуска.
- Введение.
- 2.1 Загрузка Бейсика через блок кодов.
- 40 ЛУЧШИХ ПРОЦЕДУР
- 7.ПРОЦЕДУРЫ ОБРАБОТКИ ПРОГРАММ.
- 7.1Удаление блока программы.
- 7.4 Создание REM строк
- 8.ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММЫ
- 8.1Определение размера свободной памяти.
- ВОЗВРАЩАЯСЬ К НАПЕЧАТАННОМУ
- КАНАЛЫ И ПОТОКИ
- ПРОФЕССИОНАЛЬНЫЙ ПОДХОД
- ОБРАБОТКА ОШИБОК В БЕЙСИКЕ
- ПРЕДОТВРАЩЕНИЕ ОСТАНОВКИ БЕЙСИК ПРОГРАММЫ
- 1. Блок кодов "ON ERROR GO TO"
- FORUM
- Полезные советы.
- Письмо читателя.
- Проблемы совместимости.
- Уровень II.
- Выполнение миссии.
- Сводка боевых команд
- SHERLOCK
- Понедельник, 8:00
- НАШ КОНКУРС
- Наши предложения.
- Наши условия:
- BETA BASIC
- 34. LIST FORMAT число.
- 42. ON ERROR номер строки
- 46. POP <числовая переменная>
- 47. PROC имя <параметр><,параметр><,параметр>...
- 2.2.2Изменение хэдера для блокировки автозапуска.
- 40 ЛУЧШИХ ПРОЦЕДУР
- 8.5 Составление списка переменных.
- 8.7 Поиск и замещение строки.
- Формат данных в "Спектруме"
- Числовая переменная с именем из одной буквы.
- Числовая переменная с именем более чем из одной буквы.
- Числовой массив.
- ЭЛЕМЕНТАРНАЯ ГРАФИКА В МАШИННЫХ КОДАХ
- ЭЛЕМЕНТАРНАЯ ГРАФИКА В МАШИННЫХ КОДАХ
- Управляющие символы.
- Другие приемы управления позицией и цветом печати.
- Организация экранной памяти.
- Файл атрибутов.
- Эмуляция команд БЕЙСИКа из машинного кода.
- Скроллинг экрана.
- СЛУЧАЙНАЯ ГРАФИКА
- СЛУЧАЙНАЯ ГРАФИКА
- КРИБЕДЖ
- КРИБЕДЖ
- Программа
- Комментарий
- BETA BASIC
- 53. SAVE <строка TO строка;> устройство;> имя
- 56. SPLIT (не ключевое слово).
- 57. TRACE номер строки
- РАЗДЕЛ 3. ФУНКЦИИ
- ЗАЩИТА ПРОГРАММ
- 3.2Работа со встроенными машинными кодами.
- Глава 4. Изучение блоков в машинных кодах.
- 4.1 Введение.
- 4.2.2. Новые возможности программы "RENEGADE".
- ПРОФЕССИОНАЛЬНЫЙ ПОДХОД
- "ДЕБЮТ ПРОГРАММЫ"
- УНИВЕРСАЛЬНОЕ МЕНЮ
- Программа "PRIM"
- Маленькие Хитрости
- Маленькие хитрости
- ОШИБКИ ПЗУ
- 1. Ограничение по использованию регистровой пары IY.
- 2. Особенности регистровой пары H'L' (альтернативной).
- BETA BASIC
- 6. DPEEK (адрес).
- 7. EOF (номер потока).
- 12. ITEM ()
- 13. LENGTH (n, "имя массива")
- 21. SHIFT$ (число, строка)
- 24. TIME$ ()
- 25. USING$ (строка, число)
- 26. XOR (число, число)
- ПРИЛОЖЕНИЕ 1
- ПРИЛОЖЕНИЕ 2.
- ПРИЛОЖЕНИЕ 3
- Коды ошибок.
- ЗАЩИТА ПРОГРАММ
- 1.2 Смещение системной переменной PROG.
- 1.4 Новые POKES.
- Том 4. Методы защиты программ от копирования.
- Введение.
- ОШИБКИ ПЗУ
- 8. Ошибка CLOSE#.
- 9. Ошибка CHR$ 9.
- 13. Ошибка SCREEN$.
- Ошибки в редакторе
- 14. Ошибка Scroll?.
- 18 Ошибка проверки синтаксиса.
- Ошибки калькулятора
- 19. Ошибка MOD_DIV.
- 20.Ошибка E_TO_FP.
- ПРОФЕССИОНАЛЬНЫЙ ПОДХОД
- Блок кодов, воспроизводящий звук.
- Ввод параметров при помощи оператора INPUT.
- КАК ЭТО ДЕЛАЕТСЯ!
- RANARAMA
- Предварительные исследования.
- 1. Дизайн экрана.
- 2. Раскладка оперативной памяти.
- 3. Упаковка данных.
- THE DARK WHEEL
- ГЛАВА 3.
- ГЛАВА 4