ZX Review
#11-12
26 ноября 1997 |
|
Форум - Снятие защиты Microprotector'а.
──────────── Снятие MICROPROTECTOR'а Наверняка многие встречались с этой защитой. В последнее вре- мя 'MP' приобрел необычайную по- пулярность среди фирм, торгующих SOFT'ом для Спектрума. У нас накопилось приличное количество дисков, защищенных при помощи 'MP' (речь идет о версии 7.0). Поскольку дальше терпеть такое не хотелось (нель- зя сделать архивную копию, нель- зя восстановить такой диск, нельзя запустить под эмулято- ром...), пришлось заняться изу- чением этого вопроса. Итак, для начала - о сути защиты. MICROPROTECTOR ставится на какой-либо трек диска: 0-й, 160-й, или же за последним фай- лом на диске, и позволяет защи- щать BASIC-файлы (все или по вы- бору) от копирования. MICROPRO- TECTOR работает по принципу IBM- овских DIR-вирусов: он меняет начальные трек и сектор бейсик- программы (а также ее длину) на свои. Первый сектор защищаемого бейсика ксорится. Настоящие па- раметры программы также коди- руются и записываются на выбран- ный трек. Там же находится и сам 'MP'. Константы кодирования за- писаны в пробел между секторами на этом же треке. Т.е. под именами защищенных программ скрывается микропротек- тор. Таким образом, работая по принципу вторичного loader'а, 'MP' загружается вместо програм- мы, командой чтения дорожки счи- тывает константы ксорок, загру- жает настоящий бейсик, расксори- вает его и запускает. Далее ничего не подозреваю- щая программа начинает работать как обычно. Копирование такого диска стандартными средствами ни к че- му хорошему не приводит. Те же результаты при попытке восстановления плохо читающего- ся диска, если на нем присут- ствует 'MP': константы уничто- жаются и диск безвозвратно поте- рян. Под эмулятором 'MP' сбрасыва- ется - ни UKV Spectrum Debugger, ни Z80TRDOS не умеют читать тре- ки командой чтения дорожки... Но не все так плохо. Сущес- твует замечательная программа для копирования подобных дис- ков - копировщик 'McDONALD-2'. (кстати, кто-нибудь знает его авторов ???) Для получения копии диска достаточно скопировать его лю- бым потрековым копировщиком, а потом отдельно скопировать трек с 'MP' при помощи 'McDONALD'а. Существует и другой способ - снять защиту. Это легко можно сделать под 'STS'ом: загружаете бейсик через MERGE, трассируете код с адреса 23884, пока не уви- дите такую последовательность: 140. PUSH IX NOP NOP NOP NOP EI JP #3D2F 2 затем записываете (запоминаете) 8 байт с адреса 23781 (это нас- тоящие данные о программе) и за- писываете один сектор с адреса 23867 (начало бейсика) на те сектор и трек, что указаны в ад- ресах 23787/23788. Все! Остается только под диск-доктором в заголовке файла (того, с которого собственно мы и снимаем защиту) вместо находя- щихся там 8-ми (7-ми, без учета типа файла - это всегда бейсик) байт (полная длина BASIC, длина без переменных, обьем в секто- рах, начальные трек и сектор) указать записанные ранее. После всего этого на диске окажется абсолютно нормальная программа, которая свободно ко- пируется не только в потрековом, но и в пофайловом режиме. Таким образом мы сняли защи- ту с нескольких дисков. Но ког- да очередь дошла до диска, на котором было около 40 системных программ, защищенных MICROPROTE- CTOR'ом... Короче говоря, написали мы небольшую программку, которая сама делает все это. В процессе ее тестирования как-то незаметно перевелись все защищенные диски, и пропал сти- мул делать из небольшой процеду- ры серьезную программу (как это было задумано ранее) для снятия 'MP'. Чтобы программа все-таки не пропадала без дела, мы решили отослать ее в ZX-РЕВЮ. Вот ее текст: 140. ORG 48000 ;***************************** ; ANTIMICROPROTECTOR ;***************************** ; Written by Max from 'CYBERAX SOFTWARE' 3; on 15.08.97, Kemerovo. ; START LD (STK),SP ;сохранили стек. LD HL,(23613) LD E,(HL) INC HL LD D,(HL) LD (OBR+1),DE ;тоже сохранили. MAIN LD SP,(STK) ;главный цикл. CUR_NAM LD HL,NAMES ;в HL - текущее имя файла. LD A,(HL) INC A JP Z,END ;если имена кончились. LD DE,23773 LD BC,8 LDIR ;перебрасываем в заголовок. LD (CUR_NAM+1),HL LD A,"B" LD (DE),A ;----------------------------------------- ; ЗДЕСЬ МОЖНО СДЕЛАТЬ СИГНАЛ ; ДЛЯ ВСТАВКИ ИСХОДНОГО ДИСКА ;----------------------------------------- LD C,10 CALL #3D13 ;ищем такой файл. LD A,C CP 255 JP Z,END LD (NUM+1),A XOR A LD (23824),A LD (23801),A LD C,14 CALL #3D13 ;считываем бейсик. LD HL,23912 LD DE,#DE00 LD BC,768 LDIR ;кидаем microprotector туда, ;где он должен работать. DI CALL DECODE DEFW #DE00 DEFB 21 CALL DECODE DEFW #DE15 DEFB 24 CALL DECODE DEFW #DE2D DEFB 30 CALL DECODE DEFW 57171 DEFB 38 CALL DECODE DEFW 57405 DEFB 30 ;все пять ксорок пройдены! CONT10 LD SP,TABLE LD A,4 CLEAR POP DE POP HL AND A SBC HL,DE LD B,H LD C,L LD H,D LD L,E INC DE LD (HL),0 LDIR DEC A JP NZ,CLEAR ;ну вот, удалили всякий мусор... LD SP,(STK) LD HL,23814 LD (57219),HL LD HL,57501 LD (HL),195 ;ставим точку INC HL ;останова. LD DE,CONT LD (HL),E INC HL LD (HL),D JP 56900 ;запускаем все это. CONT IM 1 EI ;----------------------------------------- ; ЗДЕСЬ МОЖНО ВСТАВИТЬ СМЕНУ ДИСКА ;----------------------------------------- NUM LD A,0 LD C,9 CALL #3D13;модифицируем заголовок. LD DE,(23787) LD BC,#0106 LD HL,23867 CALL #3D13 ;пишем расксоренный ;первый сектор бейсика на место. JP MAIN ;на начало. END LD SP,(STK) LD HL,(23613) OBR LD DE,0 LD (HL),E INC HL LD (HL),D RST 8 DEFB 255 DECODE POP HL ;самая важная подпрог- LD E,(HL) ;рамма: занимается INC HL ;прохождением ксорок. LD D,(HL) INC HL LD C,(HL) INC HL PUSH HL LD B,0 EX DE,HL PUSH HL PUSH BC DEC C DEC C LD DE,XORKA LDIR EX DE,HL LD (HL),195 INC HL LD DE,POINT1 LD (HL),E INC HL LD (HL),D LD A,(REG) LD R,A JP XORKA POINT1 POP BC POP HL LD DE,XORKA LDIR EX DE,HL LD (HL),195 INC HL LD DE,POINT2 LD (HL),E INC HL LD (HL),D LD A,(REG) LD R,A JP XORKA POINT2 LD A,R RLCA SUB 8 RRCA LD (REG),A RET NAMES DEFM "GAME1 " ;здесь находятся DEFM "GAME2 " ;имена вскрываемых DEFM "GAME3 " ;бейсик-файлов. DEFB 255 ;маркер конца. REG DEFB 0 ;всякие переменные... STK DEFW 0 TABLE DEFW 56832,56906 DEFW 57171,57208 DEFW 57406,57434 DEFW 57511,57546 XORKA DEFB 0 ;сюда переносятся ксорки. 2 Теперь инструкция по эксплуа- тации. 1) Ассемблируете данную прог- рамму с нужными вам именами (ка- кие именно имена вам нужны, вы узнаете дальше). 2) Даете CLEAR 47999. 3) Вставляете защищенный диск. 4) RANDOMIZE USR 48000. Начнется ерзанье головки дис- ковода по диску, моргание бордю- ра, появится немного мусора в экране. Сохраняйте хладнокровие и дождитесь окончания этого про- цесса. После этого защита снята. Правда, сам 'MP' на диске все же останется, но он абсолютно безвреден. Теперь тонкости. Вы наверня- ка заметили в листинге коммента- рии, относящиеся к смене диска. Дело вот в чем: программа сня- тия записывает исправления на тот же диск, и если она вдруг сглючит - например, микропротек- тор другой версии (я, правда, таких не встречал, но...) или вы указали имя незащищенной прог- раммы, или что-то еще, то диск может быть испорчен. Поэтому либо скопируйте диск McDONALD'ом и запускайте снима- тель на нем, либо организуйте запросы на смену диска (в этом случае перед запуском ANTI_MP необходимо потреково скопировать защищенный диск на другой, и этот другой диск вставлять по запросам программы). Есть и третий путь, которым пользовался я: рискнуть, и всю операцию по "вырезанию" прово- дить с одним диском (сбоев пока еще не было...) Теперь самое главное: как уз- нать, что на диске именно мик- ропротектор, а не что-либо иное. Во-первых, при запуске бейси- ка, головка дисковода либо едет на 160-ю дорожку, либо в конец диска, либо остается на 0-й (это зависит от того трека, на кото- рый был установлен 'MP'). Во-вторых, дисковод при этом некоторое время крутится на та- ком треке (микропротектор чи- тает дорожку). Наблюдается ха- рактерное моргание бордюра белым цветом и слышен щелчок. В-третьих - попытка запуска копии программы на другом диске приводит к сбросу. И, наконец, самый главный признак - длина такого бей- сик-файла равна 762 байтам, т.е. 3-м секторам. Еще могу пореко- мендовать посмотреть под диск- доктором начальный трек подозри- тельного файла. Если он 0-й или 160-й, то это еще одно подтвер- ждение. Правда, может случиться, что защита спрятана в свободной об- ласти диска, но мне таких вари- антов еще не встречалось. На этом все. Может быть, кто- нибудь из читателей РЕВЮ возьмет и сделает из ANTIMP более серь- езную программу - мы это только приветствуем. ────────────
Другие статьи номера:
Похожие статьи:
В этот день... 10 октября