Move #03
15 марта 1997

XOR'em ALL - Ксорка с командой LDIR , Обратные ксорки.

<b>XOR'em ALL</b> - Ксорка с командой LDIR , Обратные ксорки.
                 КСОРКИ
──────────────────────────────────────────
(c) Mastsoft

   Привет всем! В этой статье я решил про-
должить  тему про ксорки, которую в преды-
дущем номере начал обсуждать ARS. И в этой
статье я просто внесу некоторые дополнения
и расскажу о некоторых новых приемах защи-
ты. Итак, поехали!
   Первый, и пожалуй самый интересный при-
ем связан со всем известной командой LDIR.
Начну с особенностей этой команды. Что де-
лает  процессор  когда  встречает  команду
LDIR?

 1. Процессор считывает код команды.
 2. Из регистра HL берется байт.
 3. Байт записывается в регистр DE.
 4. Увеличивается регистр HL (HL=HL+1)
 5. Увеличивается регистр DE (DE=DE+1)
 6. Уменьшается регистр BC (BC=BC-1)
   Так продолжается до того, как BC станет
равен 0.

   Самое главное в этой последовательности
команд  то, что ПРОЦЕССОР ПОСТОЯННО СЧИТЫ-
ВАЕТ КОД КОМАНДЫ LDIR.
   Что  же  произойдет  если HL залезет на
код  команды LDIR ?. Я думаю, что вы намек
поняли.  Поэкспериментировав с этой коман-
дой,  можно  добиться интересных результа-
тов.

   Теперь я расскажу о примитивной привяз-
ке ксорки к определенной области памяти.
   Вот, например, примитивная ксорка:

        JR START
STACK   POP DE
        PUSH DE
        RET
START
        XOR A
        LD R,A
        LD HL,BEG_DATA
        LD BC,длина в байтах.
LOOP    LD A,R
        XOR (HL)
        XOR H
        XOR L
        CALL STACK
        XOR E
        XOR D
        LD (HL),A
        INC HL
        DEC BC
        LD A,B
        OR C
        JR NZ,LOOP
BEG_DATA...............

   Когда выполняется комманда CALL на стек
устанавливается тот адрес, который шел не-
посредственно  за  CALL.  Процедура  STACK
снимает  этот  адрес  в DE. После комманды
CALL  стоит  XOR E, XOR D. Получается, что
если  взломщик  перенесет  ксорку в другое
место  в регистре DE будет другое значение
и раскрутка ксорки произойдет неправильно.

   ОБРАТНЫЕ КСОРКИ.
   В  последнее  время появилось много так
называемых ОБРАТНЫХ КСОРОК. Отличие обрат-
ной ксорки от простой в том, что расксори-
вание  начинается не с начала расксоривае-
мого блока а с конца.
   Например:

START   DI
        XOR A
        LD R,A
        LD HL,END_DATA
        LD BC,длина в байтах.
LOOP    LD A,R
        XOR (HL)
        XOR H
        XOR L
        LD (HL),A
        DEC HL
        DEC BC
        LD A,B
        OR C
        JR NZ,LOOP
        ***
 END_DATA...............


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

        DI
        XOR A
        LD R,A
        LD IX,END_DATA
        LD HL,LOOP
 LOOP   LD A,R
        XOR (IX+0)
        LD (IX+0),A
        DEC IX
        JP (HL)
        ***
END_DATA..............


   Не  правда  ли  красиво?  я думаю дога-
даться   как   она  работает  не  составит
больмого труда.



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

График - Список, работающих BBS г.Минска.

Обзор - Первое собрание СисОпов: интервью с McMAKER, Stinger, ARS, Wolfsoft.

XOR'em ALL - Ксорка с командой LDIR , Обратные ксорки.

Прикол - В гостях у MASTSOFT'a.

Тест - Ответы на тест 2-го номера.

Радио - Схема FM-радио микрофона.

Конкурс - Опрос-конкурс на лучшую игровую программу.

Реклама - Реклама и объявления.


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

Похожие статьи:
Coding - Процедура "Плавающие атрибуты".
How to convert gfx for colour-per-pixel mode - how to convert gfx to "EGA" mode of ATM Turbo.
Chinese Proverbs
Обьявление - Ищем дрyзей пo Sрeссy!
Рассказ - Зеркало.

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