Move
#02
03 февраля 1997 |
|
XOR'em ALL - 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) |
Тест - Тест "Умеете ли вы слушать собеседника". |
Реклама - Реклама и объявления. |
Похожие статьи:
В этот день... 21 ноября