Move #02
03 февраля 1997
  Софт  

XOR'em ALL - XOR'ки и как с ними бороться : IMP PROTECTION SYSTEM'95 & GOLDEN EAGLE PROTECTION SYSTEM.

<b>XOR'em ALL</b> - XOR'ки и как с ними бороться : IMP PROTECTION SYSTEM'95 &
 GOLDEN EAGLE PROTECTION SYSTEM.
                XOR'EM ALL
──────────────────────────────────────────
(c) Ars

   В  этот  раз я не смог найти себе более
глупого  занятия, чем написать про ксорки.
Правда, сначала я хотел сказать что-нибудь
о,  так сказать, приемах программирования,
типа мультиколора или скроллах по бордеру,
но потом передумал. Загрузите уж лучше са-
ми  STS'ку  и  посмотрите сами то, что Вас
интересует.  Хотя,  честно говоря, сегодня
уже ни одной программы не найти, в которой
можно  было  бы спокойно покопаться. Всюду
поработали  хакеры,  понаставив  ксорок  и
декранчингов.
   Ну  с decrunching'ами уж ладно, тут все
понятно - полезная штука: то же что и рас-
паковщик, но гораздо круче и тормознее. Не
всегда  можно дождаться запуска программы,
так  и  хочется надавить Reset ( особенно,
когда нет индикатора прогресса, как в дем-
ке  FastCode).  Однако,  память экономится
немеряно.  Взять  вот к примеру Lemming'ов
(by  PSG),  втиснутых  в  128Кб(!): а ведь
раньше  целый  диск  занимали.  Ну, ладно,
можно и подождать немного, раз такие дела.
   А вот xor'ки, как раз наоборот, засоря-
ют  память,  причем  как в прямом, так и в
переносном  смыслах. В зависимости от сте-
пени изврата они пожирают от десятков байт
до десятков секторов. И не лень же кому-то
все  заксоривать?!  Понятно,  что  если не
лень, то значит это зачем-то необходимо. В
принципе,  надо  понимать, ксорка является
одним  из способов защиты информации и ав-
торских  прав,  хоть  и очень примитивным.
   Непонятно  только  одно: от кого же все
защищаются? От юзеров? Ну не для всех ведь
людей  слово "монитор" ассоциируется с вы-
ражениями "STS" или "кнопка NMI". От хаке-
ров?  - разве можно защититься от хакеров?
Возможно лишь только приостановить процесс
взлома  на несколько секунд (часов), и все
равно ведь до цели доберутся. Так что, хо-
чу  сказать:  если Вы собираетесь защитить
свой  продукт,  то не надейтесь на ксорки!
Лучше  уж  поставьте где-нибудь в середине
кода   какую-нибудь  извратскую  проверку,
например:

       RLC E,(IX+#13)
       RET C
       INC SP
       SRL E
       RET PO

Найти  в  128  килобайтах  памяти подобную
процедурку и въехать зачем она нужна всег-
да  гораздо  сложнее,  чем раскрутить даже
самую  изощренную  ксорку. А вообще-то, по
моему мнению, если уж и ставить ксорку, то
только  такую, которую самому будет сложно
взломать,  даже зная, как она работает. Но
возможно ли это?
   В  заключении этого, надо полагать, не-
шуточного  бреда,  приведу несколько самых
ярких творений компьютерной мысли и спосо-
бы борьбы с ними:
   IMP  PROTECTION  SYSTEM'95. Весь Mortal
Combat  в  свое  время поголовно защищался
почему-то именно этой ксоркой. А некоторые
люди, такие как Andy2 и Warlock, даже что-
то  там  пытались в ней дорабатывать (пос-
ледний добавил "убивалку монитора"). Сразу
после запуска (#5D74) ксорка перекидывает-
ся  в  очищенный экран и получает управле-
ние.  Ее начало выглядит достаточно бредо-
во:  пересылки между регистрами, обращения
к  ПЗУшке, какие-то расчеты на калькулято-
ре...  Думаю,  что  трассировать  ксорку и
разбираться  что  зачем  не имеет никакого
смысла.  Гораздо эффективным в данном слу-
чае является поиск более-менее "нормально-
го  кода".  По  адресу  #40C6 обнаруживаем
следующее:

#40C3  JP PO,#40CA
#40C6  LD A,R
       XOR (HL)
       LD (HL),A
#40CA  LDI
       RET PO
       DEC SP
       DEC SP
       LD L,L
       RET PE

А  это и есть стандартная стековая ксорка.
Установив  на  этот  адрес точку останова,
получим   следующие   значения  регистров:
 HL=#40D3 ;источник - заксоренный код
 DE=#44CC ;назначение - выполнимый код
 BC=#00FF ;длина блока
Обратим  внимание  также на стек, а точнее
на его содержимое:
 SP=#402F (SP)=#44CB (SP-2)=#40C3
То  есть: пока BC не равно 0, адрес выхода
#44CB пропускается в стеке и управление по
команде  RET PE передается на адрес #40C3.
Как  только, после очередного LDI, регистр
BC станет нулем, срабатывает RET PO и осу-
ществляется выход из цикла. Прокрутим раза
три  цикл ксорки в мониторе и далее поста-
вив  точку останова на адрес #44CB, мы по-
падем  на загрузчик. В ячейке #40DE сохра-
няется адрес загрузки блока, а в #40E0-его
длина.  Остается  добавить, что после того
как мигнет синий border и начнется загруз-
ка с диска, управление по стеку передается
на адрес #412E.
   GOLDEN  EAGLE PROTECTION SYSTEM. Защита
ставилась  на loader'ы Silicon Brains. Ос-
нована  на оригинальной идее использования
стека в теле ксорки. Работа с памятью идет
только с помощью PUSH'ей и POP'ов. Я видел
несколько вариантов защиты, но они отлича-
лись только несколькими командами:

#5DC5 DI             |       EXX
      LD SP,#5DFB    |       LD A,R
      LD BC,#005F    |       XOR L
      LD A,#28       |       LD L,A
      LD R,A         |       LD A,R
#5DD0 POP DE         |       XOR H
      POP HL         |       LD H,A
      EXX            |       PUSH HL
      POP HL         |       LD A,R
      POP DE         |       XOR E
      LD A,R         |       LD E,A
      XOR E          |       LD A,R
      LD E,A         |       XOR D
      LD A,R         |       LD D,A
      XOR D          |       PUSH DE
      LD D,A         | #5DFA POP DE
      PUSH DE        | #5DFB POP HL
      LD A,R         |       POP DE
      XOR L          |       POP HL
      LD L,A         |       DEC BC
      LD A,R         |       LD A,B
      XOR H          |       OR C
      LD H,A         |       JR NZ,#5DD0
      PUSH HL        | #5E03 ....

Разумеется,  что  первоначально ничего по-
добного  на цикл не наблюдается (здесь по-
казан  уже расксоренный блок), а начиная с
адреса  #5DFB  (сюда  устанавливается стек
при  запуске)  идет невразумительный бред.
Первым  делом  ксорка восстанавливает свои
последние 8 байт (4 раза POP и 4 PUSHа), и
дойдя  до  адреса  #5DFA она обретает свой
"естественный"  вид. Ну a дальше с помощью
4-х POP'ов стек смещается на 8 байт вверх,
т.е. на адрес #5E03, и круг замыкается...

                (maybe to be continued...)



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

Предисловие - О новой оболочке газеты.

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

Размышления - Бредовые мысли о дальнейшем развитии оболочки газеты. Почему газета "нерегулярная".

Обзор - Обзор устройств для SPECCY : Видеопорт. Контроллер любой IBM клавиатуры.

Программистам - Пишем Multicolor...

XOR'em ALL - XOR'ки и как с ними бороться : IMP PROTECTION SYSTEM'95 & GOLDEN EAGLE PROTECTION SYSTEM.

Интервью - Интервью с Николаем Кежевниковым (NICK SOFT)

Тест - Тест "Умеете ли вы слушать собеседника".

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


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

Похожие статьи:
Вступление - Постоянство - лучший способ уважать традиции.
Советы экспертов - Firelord.
От редакции - недавно получил письма от VEL'a, Slack Den'a и Kvazar'a.
Найдено в интернете - Mentos #4, #5.
Beatles - Сегодня у нас стаpая, но очень хоpошая песня СОH-ТPАВА.

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