Spectrofon #15
04 октября 1995

Система - продолжение темы "Недокументированные команды процессора Z-80".

<b>Система</b> - продолжение темы
┌──────────────────────────────┐
│ ───────   СИСТЕМА   ──────── │
└──────────────────────────────┘

   Продолжая тему недокументиро-
ванных команд процессора, подня-
тую  в  одном из прошлых номеров
нашего  журнала, сегодня мы пуб-
ликуем  ответ Cтанислава Ефимова
на  письмо  Сим Олега, в котором
продолжается обсуждение этой те-
мы. Редакция журнала готова выс-
лушать  и  другие мнения на этот
счет.

 Станислав В.Ефимов
         (Fanatic Stas)
E-Mail 2:5020/525.29@FIDOnetg

   КТО КОГО "УБИЛ НАПОВАЛ" ИЛИ
УЧИТЕСЬ ЧИТАТЬ НАЗВАНИЯ, А ТАКЖЕ
         ПОСЛЕСЛОВИЯ!

    В    начале   мая   редакция
"Спектрофона"   получила  письмо
читателя,  часть  которого сталa
откликом   на  опубликованную  в
"S"N11  статью в разделе "Систе-
ма".  Я с интересом прочитал это
письмо.  Отдельные позиции этого
письма  вызвали у меня некоторое
(если  не сказать больше) недоу-
мение, и кое-что захотелось про-
комментировать.   Хочется  наде-
яться, что читателям "Спектрофо-
на" будет интересно...



   Начну с P.P.S Олега:

Sim O.R: "P.P.S: Если Вам  будет
интересно, я  хотел  бы  продол-
жить  тему   недокументированных
команд  и  подготовил  материал,
предлагаемый ниже. Если  неинте-
ресно - не смотрите."

FS: "Ничего подобного - интерес-
но!"

Олег (О):
 1995 Sim O.R. and SERGE,
          Volgograd.

    Поводом для подготовки  это-
го материала  стало  практически
одновременное  появление  статьи
Fanatic Stas'a в журнале  'Спек-
трофон' и  информационной  прог-
раммы Волгоградского программис-
та  SERGE  под  названием   'Top
Secret'.
Обе они посвящены недокументиро-
ванным  командам  Z-80. Первая -
полна зияющих пробелов, вторая -
очень  интересная,  но  содержит
ряд   неточностей.  Складывается
интересная  ситуация, когда мно-
жество  людей  знает про эти ко-
манды, активно их испольэует, но
не  спешит  делиться  секретами.
Это  вполне  понятно: применение
недокументированных  команд наи-
более  эффективно  в  кодирующих
программах   (оставляют  'темный
уголок'  для защиты?). Но все же
настало  время  немного рассеять
туман. Я ставил своей целью сис-
тематизировать разрозненные све-
дения  по  этому  вопросу и ни в
коем случае не претендую на лав-
ры первооткрывателя.

FS:    По    поводу     'зияющих
пробелов': внимательно  прочтите
послесловие к тому  материалу...
А вообще: лучше немного не дого-
ворить, если не  твердо  уверен,
конечно, чем давать 'сырой'  ма-
териал, который может  ввести  в
заблуждение или вообще завести в
другую  сторону  (это   я    про
статью, посвященную TRDOS, в од-
ном из  первых  номеров "S").  С
'темным уголком'  не  соглашусь:
все что я видел  из  программных
(впрочем, как  и  основанных  на
регистрах ВГ93 - в смысле,  дис-
ковых) защит на сегодняшний  мо-
мент, позволяет мне сделать  вы-
вод, что знать недокументирован-
ные  команды  вообще    необяза-
тельно! Эти команды не  способны
сильно затруднить доступ к защи-
щенному коду, важно  лишь  знать
КУДА 'копать' и КАК. ЛЮБАЯ защи-
та  имеет  слабую сторону, там и
надо  копать  (а не бить в лоб).


Вообще, степень надежности защи-
ты в целом определяется степенью
защиты  самого  слабого ее звена
(я  кого-то процитировал, а кого
-  не  помню).  Это  очень важно
знать   программистам,   которые
ставят  подобные защиты, хотя на
"Спектруме"  такую защиту, види-
мо, поставить не удасться. Можно
лишь максимально затруднить путь
взломщику...  Что  и  сделано  в
свежайшем    релизе   Step'а   -
Звездном  Hаследии...  Я не буду
продолжать  эту  тему, поскольку
уважаю Авторов Программ и не хо-
чу  плодить начинающих 'взломщи-
ков'  (термин  hacker я в данном
случае  не  употребляю,  так как
все   что   творится  сейчас  на
Спектруме   относится   исключи-
тельно    к   теpмину   Software
Piracy).


O:  Начнем  с того, что не будем
рассматривать  набившие всем ос-
комину  операции над половинками
индексных регистров. Они давно и
прочно  стали достоянием широкой
общественности.  С командой SLI,
тоже,  похоже, разобрались и за-
полнили  восемь нахально пустую-
щих  клеточек в таблице префикса
CB.  Поэтому  есть смысл перейти
сразу к командам, описания кото-
рых  пока еще не не опубликованы
нигде  (кроме, частично, в прог-
рамме 'Top Secret').

      ДУБЛИРОВАННЫЕ КОМАНДЫ.

    Прежде  всего, дублированные
команды  -  это такие хитрые ко-
манды, которые представляются не
одним,  а  двуме  и более кодами
операции (КОП).


Команды  эти общеизвестны и опи-
сания   не  требуют,  достаточно
посмотреть  в  таблицу.  Команда
NEG,  например, может устанавли-
ваться  восемью  разными  КОП, а
мониторы-отладчики    'понимают'
только  один:  ED44! Несмотря на
это  все восемь делают одно и то
же, инвертируют аккумулятор. Об-
ратите  внимание  на парочку ко-
манд,  которым  не  нашлось даже
подходящего мнемокода и действие
этих  команд  объяснено  в снос-
ке...

FS:  Здесь  я  прерву  изложение
Олега  и  приведу  мой    аналог
большой таблицы, которую нарисо-
вал  автор. Трудно включить ее в
этот  текст, в ней много пустого
места, к тому же ширина строки в
32 символа сильно ограничила мою
фантазию...

Надеюсь,  что  мое  чтение  этой
таблицы  - правильное, и возмож-
ные  ошибки  будут  на 'совести'
автора. Я также 'выкинул' из нее
все  команды, набившие оскомину,
типа  EDB0  (LDIR) Итак, недоку-
ментированные  команды (все зна-
чения - шестнадцатиричные). Сна-
чала ED, далее:

54,64,74,4c,5c,6c,7c  -  NEG;
55,65,75  -  RETN;
5d,6d,7d  -  RETI;
66,4e,6e  -  IM 0;
76        -  IM 1;
7e        -  IM 2;
70 -  аналог  {IN A,(C);OR A}
      по результату  OR  выстав-
      ляются флаги S, Z, P;
71 -  аналог {LD A,0; OUT (C),A}
      регистр A сохраняется.
Время выполнения двух  последних
команд - 12 тактов.

    ДВУХПРЕФИКСНЫЕ КОМАНДЫ.

    Самая  обширная  группа  ко-
манд. В общем  виде  команды  из
этой группы представляются в ви-
де:
1 байт - префикс DD или FD
2 байт - префикс CB
3 байт - смещение
4 байт - код команды

   Работают  эти  команды  очень
интересно. Hапример, такая  пос-
ледовательность  байт:  ddcb0100
будет иметь  вид  RLC  B,(IX+1).
Сначала действие (RLC, в  данном
случае) производится  над  ячей-
кой (IX+1),  а  затем  результат
копируется в соответствующий ре-
гистр. Команды,       работавшие
раньше с  (HL) результат  никуда
не  перегружают.


Команды  серии BIT только тести-
руют  биты  по  адресу  (IX+n) и
выставляют  флаги  в  F. Поэтому
они  дублируются  по восемь раз,
т.к. независимо от регистра, над
которым раньше производилась ко-
манда,    здесь    подставляется
(IX+n).  Особенно  'повезло' ко-
манде  SLI.  Мало  того, что она
сама недокументированная, но еще
и может выполняться 'левым' спо-
собом.

   Высказывание Fanatic  Stas'а,
что  приведенные  команды  можно
использовать  с  полезностью  не
большей NOP, убило меня наповал.
Интересный получается NOP,  если
он активно  изменяет  содержимое
памяти и регистров!




FS: Я  могу  еще  раз  повторить
фразу насчет 'полезности', одна-
ко,  в   контексте    предыдущей
статьи. Hадеюсь, что не убью Вас
наповал, если скажу,  что  знать
дублированные команды  мне  сов-
сем  необязательно.  Зачем  мне,
как программисту, знать что  су-
ществует  энное  количество  NEG
или IM2? Две команды, к  которым
не нашлось мнемоники,  я  вообще
не знаю, куда 'приткнуть' в свои
программы, и, уверен, что немно-
гие смогут найти им пpименение.

А по поводу RLC и ко. могу  ска-
зать, что эти команды мне  хоро-
шо известны и не являются по су-
ти недокументированными.





Для  того,  чтобы их 'раскусить'
необходимо  лишь  сделать шаг от
LD IX,nn, т.е. от простейших ко-
мандах с префиксами (получается,
что  LD IX тоже недокументирова-
но?).

О: Возьмите, к примеру, програм-
мы С. Ханциса 'Screen  Manager',
'Super List' и т.д., и для обще-
го  развития  раскодируйте   их.
Если у Вас это получится, то пе-
ред Вами предстанет  живой  при-
мер  кодировщика,  прекрасно вы-
полняющего  свое предназначение,
используя  как раз, так называе-
мый, 'NOP'.

FS:  Я уже написал, что в преды-
дущей статье, как и, надеюсь, во
всех  последующих,  опираюсь  на
программистов, а не на хакеров.


По  моему убеждению, большинство
(читай - все) из тех, кто вообще
приложил  руку к ассемблеру, пи-
шут   подобные  кодеры  исключи-
тельно для себя, для собственно-
го   самоутверждения,  поскольку
серьезной мозговой атаки не один
из  них (кодеров) не выдержит. Я
же  уже  давно  'на общественных
началах'  не занимаюсь, как пос-
тановкой, так и снятием (каюсь -
не  пинайте ногами) всевозможных
защит...

О:  Впрочем, чего еще можно ожи-
дать  от  хаккера,  не  умеющего
толком  переключать  страницы  в
режиме 128k.

FS: Hу наконец-то... 'Hаехал'...
И  чем я Вас так обидел? Hемного
же   Вы  видели  моих  программ,
Олег,  увы, раз Вы делаете такой
вывод!
Пару  лет назад Спектрум купили?
По поводу переключения страниц в
двух   (Stifflip,  Deactivators)
программах я расскажу как-нибудь
попозже, если будут просьбы, но,
ей-богу, это весьма поучительная
история,  связанная  с проверкой
некоторых   моих   подозрений  в
честности   некоторых   людей...
Скажу лишь, что спустя две неде-
ли после появления 'левых' прог-
рамм  выпущены  их  'правильные'
версии...  Мне  не  повезло, что
"Спектрофону" Deactivators, как,
впрочем,  и мне, так понравился.
Не выносите вердикт заочно, гос-
пода!

O:  Интересная концепция, приме-
нение  двухпрефиксных  дает  нам
две  полные таблицы кодирования,
т.е.  510  КОП (почему 510, а не
512,  я не понял... - FS), нигде
толком не описанных.
Вкупе  с дублированными команда-
ми, командами, работающими с по-
ловинками  регистров и командами
SLI, недокументированные команды
по  численности  приближаются  к
основному набору команд!

   Причем,  вероятнее всего, это
не  предел, вглядитесь в таблицу
ED, в ней еще столько 'белых пя-
тен',  что вполне вероятно появ-
ление  новых и новых команд. Кто
до  конца  знает  старину Z80? В
настоящее  время  особый интерес
должны представлять недокументи-
рованные   биты   флагового  ре-
гистра.  Hасколько мне известно,
еще никто не предпринимал фунда-
ментальных  исследований  в этой
области. Факт только то, что не-
которые  команды  при  некоторых
условиях изменяют эти флаги. Мо-
жет  быть  кто-нибудь выскажется
по этому поводу?
FS:  Мне бы тоже хотелось, чтобы
кто-нибудь   'покопал'  Z80,  но
увы,     Олег,    Ваше    письмо
единственное с материалом, кото-
рый  вызывает интерес. Откликов,
правда, намного больше - это ра-
дует! Я уже затронул вопрос фла-
гов  в  предыдущей статье, хотя,
видимо, лишь немного.

   Жаль,  что Олег не привел ис-
точников своих знаний, посколько
его материал, я надеюсь, не пол-
ностью  'срисован'  с  программы
'Top  Secret',  которую я не ви-
дел.  Хотелось бы знать источни-
ки,  откуда  появилась такая ин-
формация,   также   и   в   'Top
Secret'.  Уверен,  что такие ис-
точники  все  же были, посколько
догадаться,  сколько выполняются
ED70 и ED71, мне кажется, невоз-
можно.  IM0  и  IM1  также плохо
поддаются дифференцированию.
Похожая  ситуация  и  в случае с
RETN,   RETI,  хотя  здесь  еще,
пpавда   не   без   тpуда,   мне
удасться их отличить...

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

          ЖДЕМ ПИСЕМ!

             * * *



Другие статьи номера:

Экспертиза - разбор уникальной игры "Captain Blood", представляющей из себя сплав космического квеста и детектива.

Дебют - описание интересной и несложной графической адвентюры "Sidewalk".

С миру по биту - ответ представителя фирмы КОНДОР (разработчик компьютера Profi) на письма читателей.

С миру по биту - ответ представителя фирмы КОНДОР (разработчик компьютера Profi) на письма читателей, а так же продолжение темы "Как написать МЕГАДЕМО".

Чемпионат - освещается прохождение Открытого Чемпионата Вирусов.

Система - продолжение темы "Недокументированные команды процессора Z-80".

Горячий привет - крах оригинального проекта "ELITE-3". Рассказ о скандальной истории, связанной с этой игрой.

Премьера - программа проверки штрихкода EAN-13, Календарь планет, демоверсия игры Kingdom, Zanny, Montana Jones II и новый ассемблер MASM от KSA.

Реклама - реклама и обьявления журнала.


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

Похожие статьи:
SPbZXNet BBS list - Cпиcok XTR-сoвмecтимыx BBS Caнkт-Пeтepбypгa.
ANOTHER WORLD - О компьютере Be Box.
Софтпанорама - Советы первокурснику или варианты конспектирования скучных лекЦий.
Code - О мерцающем бордере: использование мерцание для повышения разрешения на бордере.
Секреты - Секретные кнопки в разных приложениях: Wolfenstein'2004, IG#5, ACEdit, DNA OS, Wild Disk Copier.

В этот день...   21 ноября