Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
РТ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2012
Тип роботи:
Методичні вказівки до лабораторної роботи
Предмет:
Системне програмування та операційні системи

Частина тексту файла (без зображень, графіків і формул):

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра «ІНФОРМАЦІЙНІ ТЕХНОЛОГІЇ ВИДАВНИЧОЇ СПРАВИ» МЕТОДИЧНІ ВКАЗІВКИ до лабораторних робіт № 1-6 з дисципліни “Системне програмування та операційні системи в комп’ютерній поліграфії” для студентів базового напрямку 051501 «Видавничо-поліграфічна справа» стаціонарної та заочної форм навчання Затверджено на засіданні кафедри Протокол № 11-2011/2012 від 19.06.2012 р. Львів 2012 Методичні вказівки до лабораторних робіт №1-6 з дисципліни “ Системне програмування та операційні системи в комп’ютерній поліграфії ” /Укл.: Різник О.Я. – Львів: Видавництво Національного університету “Львівська політехніка”, 2012. – 21с. Укладачі: Різник Олег Яремович, канд. техн. наук, доц. Відповідальна за випуск Різник Олег Яремович, канд. техн. наук, доц. Рецензенти Цмоць Іван Григорович, докт. техн. наук, проф. Пелешко Дмитро Дмиторович, докт. техн. наук, проф. ЗМІСТ Стор.  1. Методичні вказівки до лабораторних робіт № 1-2 - “Загальні принципи побудови захисту від копіювання” 2. Методичні вказівки до лабораторної роботи № 3 - “Створення на доріжці дискети сектора великої довжини” 3. Методичні вказівки до лабораторної роботи № 4 - “Захист від копіювання за допомогою простановки фізичної мітки” 4. Методичні вказівки до лабораторної роботи № 5 - “Застосування операцій довгого читання і довгого запису для захисту від копіювання” 5. Методичні вказівки до лабораторної роботи № 6 - “Індивідуальні параметри ПЕОМ”  4 12 14 17 19   Лабораторні роботи № 1-2 Тема: Загальні принципи побудови захисту від копіювання. Мета роботи: Зрозуміти принципи побудови захисту від копіювання. Завдання: Написати програму, яка нестандартно форматує дискету, записує та зчитує інформацію на дискету Вступ Курс лабораторних робіт базується на лекційному матеріалі з курсу "Системне програмування та операційні системи" та довіднику з мови TURBO-ASSEMBLER. Він дає змогу ознайомитись та вивчити основні особливості цієї мови для практичного застосування. Роз'яснення до завдання. Загальні принципи побудови захисту від копіювання Система захисту від копіювання або система захисту авторських прав - комплекс програмних або програмно-апаратних засобів, що забезпечують ускладнення або заборону нелегального поширення, використання і/або зміни програмних продуктів. Під нелегальним поширенням розуміється продаж, обмін або безкоштовне поширення програмного продукту, авторські права на який належать третій особі, без його згоди. Нелегальне використання програмного продукту без згоди власника авторських прав. Нелегальна зміна внесення в код програми або зовнішній вигляд (інтерфейс) змін, не обумовлених з власником авторських прав з тим, щоб змінений продукт не підпадав під дію авторських прав їх власника. При розгляді питання про захист авторських прав можна виділити три основні ситуації, пов'язані з методом поширення програмного забезпечення: • Поширення (розсилка або передача) програмного продукту на магнітних носіях (дискетах) і установка самим користувачем. Що найчастіше зустрічається спосіб поширення програм, який накладає самі жорсткі вимоги на систему захисту. При цьому у користувача залишається можливість практично необмежених експериментів із захищеним програмним продуктом. Користувач може: • намагатися копіювати дистрибутивні дискети; • дослідити логіку роботи захисту за допомогою відлагоджувальний і дизасемблерних коштів; • намагатися перенести інстальований пакет на інший комп'ютер; • намагатися змоделювати логіку роботи системи захисту для виготовлення тотожного варіанту захищеного продукту. Отже, будь-яка система захисту від копіювання може бути розкрита. Чим же керуватися при створенні і використанні засобів захисту? По-перше, треба врахувати умови поширення програм, що захищаються і потенційні можливості передбачуваного власника по зняттю захисту. По-друге, приблизно оцінити свої втрати від зняття захисту. По-третє, спланувати систему заходів по реагуванню на зняття захисту і можливе нелегальне тиражування або використання Вашої програми. Отже, треба врахувати: • передбачуваний тираж захищеного продукту (чим він вище, тим більша імовірність, що захищений продукт попаде до людини, що може зняти захист); • ціну захищеного продукту і знижки при купівлі великого числа копій (чим ціна нижче, тим менше бажання тратити сили на зняття захисту); • частоту появи нових версій (якщо версії оновлюються раз в місяць, то бажання знімати захист швидше всього не з'явиться); • спеціалізованість і складність в освоєнні захищеної програми (спеціалізована радіоелектрона САПР навряд чи знадобиться пересічному користувачеві, в той час як красиву захищену гру постійний об'єкт нападу «хаккерів»); • наявність у потенційного користувача програмістів високої кваліфікації, здатних зняти захист із захищеного продукту; • рівень післяпродажного сервісу, який Ви можете забезпечити (можливо, нелегальний користувач не зможе без вашої допомоги або інструкції розібратися з програмою); • знижки при легальному придбанні попередніх версій; • реальні санкції до користувача, що зняв захист (у разі невживаності юридичних заходів Ви можете просто не підтримувати відносин з цією фірмою або людиною). Можна сформулювати деякі апріорні вимоги, виконання яких істотно підвищить надійність системи захисту від копіювання. • Некопійованість дискет (якщо це необхідне за умовами поширення) автоматичними копіювальниками. Даний пункт гарантує, що для розуміння принципу некопійованості необхідне буде ручне вивчення структури диска. • Неможливість застосування стандартних відлагоджувальний засобів при вивченні ними логіки роботи захищених програм без додаткових маніпуляцій з кодом програми або без плати апаратного відладчика. У цьому випадку непрофесіонал або програміст середньої кваліфікації швидше всього не зможе «пройти» захищену програму відладчиком. • Некоректне дизасемблювання захищеної програми або її істотно важливих фрагментів при застосуванні стандартних пакетів. Це гарантує, що для дизасемблювання щонайбільше доведеться писати спеціальну програму. • Неможливість трасування по істотно важливих перериваннях за допомогою стандартних засобів. Отже, в цьому випадку в системі захисту повинен бути передбачена захист у всіх цих напрямках. • Установка програмного продукту представником фірми. У цьому випадку можливості користувача обмежені спробами перенесення на інший комп'ютер або дослідженням логіки роботи захищених програм. • Використання програмного продукту особами, не зацікавленими в його подальшому поширенні. Особливістю даного випадку є те, що користувач буде сам намагатися не допустити поширення програм і задача захисту від копіювання в атом випадку зводиться до захисту від несанкціонованого доступу іншими особами. А ця проблема вирішується значно легше. Такий випадок не так рідкий, як це може показатися. Так, наприклад, в умовах конкуренції, СУБД, що використовується для торгів на біржі, або інженерна САПР на заводі будуть суворо охоронятися від «відходу» до інших потенційних користувачів-конкурентів. Нарешті, можна виділити ситуацію, коли система захисту придбається тільки для «взлому». Надійність системи захисту від копіювання здатність протистояти спробам проникнення в алгоритм її роботи і обходу механізмів захисту. При розгляді питання надійності треба пам'ятати про два основні твердження. Твердження 1. Будь-яка система захисту від копіювання може бути розкрита в кінці кінців. Твердження 2. Надійність системи, захисту рівна надійності її найслабшої ланки. Вірність першого виходить з того, що інструкції (команди) системи захисту від копіювання достовірно розпізнаються ПЕОМ і в момент виконання присутні у відкритому вигляді як машинні команди. Отже, досить відновити послідовність цих інструкцій, щоб зрозуміти роботу захисту. А таких інструкцій, очевидно, може бути лише численна кількість. Друге твердження цілком очевидне. При цьому буде прихований обмін програми із «зовнішнім світом» - диском, ОС і т.д. • Складність вивчення структури розпізнавання індивідуальних параметрів ПЕОМ або технологічного аналізу апаратних засобів захисту, що застосовуються. Мається на увазі необхідність такого вибору індивідуальних параметрів, щоб вони рідко повторювалися і важко виявлялися; у разі застосування апаратних ключів щоб їх розкриття не давало істотної інформації про їх роботу. Структура захисту від копіювання Системи захисту від копіювання складаються, як правило, з наступних компонент (в дужках вказані розділи справжнього видання, в яких розглянуті питання їх побудови): • Модуль перевірки недублюючої або оригінальної інформації, перевіряє наявність ознак, що некопіюються, на дискеті (розділ 2) або оригінальну для даної ПЕОМ інформацію. По розміщенню цього модуля можна виділити 3 основних типи систем захисту: • системи з «навісним» перевірочним модулем, створеним по технології файлового вірусу (системи SHIELD, CONVOY, NOTA, Zond 3.0, Super Guard, Cerberus); • системи із зовнішнім перевірочним модулем, винесеним в окрему програму (Protect 5.0, Protect-Super, Watch); • системи з внутрішніми функціями перевірки (захищені пакети MetaDesign, Boeing Graph, Xilinx). • Модуль захисту від перегляду і аналізу логіки системи (розділи 3, 4, 5). • Модуль узгодження із захищеними структурами забезпечує правильну роботу захищених програм і адекватне сприйняття захищених даних у разі легальних копій (розділ 6). Методи отримання міток, які не копіюються, на гнучких магнітних дисках Уточнимо, що мається на увазі під копіюванням дискет - будемо говорити про процес дублювання гнучкого магнітного носія за допомогою стандартного дисковода (одного або двох). У разі одного дисковода зміст диска в один або декілька прийомів прочитується в оперативну пам'ять або в файл, а потім записується на диск; у разі двох дисководів процес може відбуватися напряму. Важливо, що в обох випадках в процесі копіювання бере участь пристрій цифрового магнітного запису і дані, що знаходиться на дискеті, представлені в деякому стандартному вигляді, а саме у вигляді послідовності треків (доріжок), на яких виділяються сектори певної довжини і з певним розташуванням на доріжці. Забезпечити некопійованість інформації з дискети значить добитися того, щоб при перенесенні на іншу дискету параметри представлення даних на копії істотно змінилися в порівнянні з оригіналом. Міткою, що не копіюється назвемо сукупність інформаційних ознак магнітного носія, що істотно змінюється при його копіюванні. Існують два основних способи формування таких міток: • нанесенням магнітної мітки; • нанесенням фізичної мітки. Особливість першого випадку полягає в тому, що мітка наноситься обладнанням того ж типу, яким і читається. Однак, частіше за все копіювання відбувається не на тій ПЕОМ, на якій мітка була проставлена. Тому, процес копіювання може внести в параметри представлення інформації на дискеті особливості дисковода або дисководів, на яких проводилося копіювання, а також особливості того або іншого способу копіювання. З іншого боку, можливо так створити мітку, щоб вона не могла бути коректно прочитана і/або записана. Наприклад, форматувати велике число секторів малої довжини, а записувати інформацію у вигляді довгих секторів і т.д. Отже, при нанесенні магнітної мітки можна виділити наступні прийоми: • Винесення мітки за межі стандартного поля копіювання; • Нестандартна розмітка доріжки (доріжок) дискети; • Прив'язка до тимчасових параметрів читання/запису; • Комбіновані методи (поєднання перших трьох). Відомі системи захисту від копіювання використовують, як правило, комбіновані методи простановки мітки. Так, система SHIELD використовує нестандартне форматування нульової доріжки з створенням довгого сектора (8196 байт), який при копіюванні не може бути коректно записаний. Система CONVOY використовує простановку мітки на нульовій доріжці шляхом прямого програмування портів контролера флопi-дисковода (мітка ставиться в мiжсекторному інтервалі). Система CERBERUS використовує нестандартне форматування перших трьох доріжок спільно з вимірюванням тимчасових параметрів читання. Системи PROTECT і НОТА суміщають нестандартну розмітку доріжки з винесенням мітки за межі стандартного поля копіювання. Розглянемо метод винесення мітки за межі поля копіювання. Відомо, що, наприклад, дискети формату 360 Кб містять 40 доріжок по 9 секторів в кожному; нумерація доріжок від 0 до 39. Ідея методу полягає в тому, щоб, використовуючи функцію 05h переривання int 13h, форматувати доріжки з номерами від 40 і більш. Цей спосіб дозволяє захиститися від програмних копіювальників, які копіюють тільки доріжки в фіксованому інтервалі номерів наприклад від 0 до 39 (або 40) (для дискет 360 Кб) або від 0 до 79 (для дискет 1,2 Мб). У таблиці, що пропонується вказані поля копіювання ряду програмних копіювальників, що широко застосовуються. Засіб копіювання Поле копіювання (доріжки)  Diskcopy 360 - 0 - 39   1.2 - 0 - 79  TeleDisk 360 - 0 - 39   1.2 - 0 - 79  CopyIIPC 360 - 0 - 40   1.2 - не копіює  Copywrit 0-43  Приклад 1. Форматування доріжки поза полем копіювання. #inсlude <bios.h> . . . // встановимо номер доріжки 41 ntrk=41; // заповнимо буфер for(i=0;i<512;i++) buffer[i] =0; // заповнення ідентифікаторів формату for(k=0;k<9;k++){ // номер доріжки buf[4*k]=ntrk; // номер головки (робочої поверхні) buf[4*k+l]=0; // номер сектора від 1 до 9 buf[4*k+2]=k+l; // довжина сектора 512 байт buf[4*k+3]=2; } // форматування 41-й доріжки flag=biosdisk(5,0,0, ntrk, l, 9, buf); if(flag!=0){ printf ( "Помилка форматування на дисководі А:"); return(0); } // запис першого сектора на знову зформатовану доріжку flag=biosdisk(3,0,0, ntrk, 1,1, buffer); if(flag!=0){ printf ( "Помилка запису на дисководі А:"); return(0); } Далі розглянемо спосіб нестандартного форматування доріжки дискети. Для цього можна застосувати також переривання int 13h, змінивши відповідним чином таблицю бази гнучкого диска. Посилання на таблицю бази диска знаходиться за адресою: сегмент 0000:0122 (0000:0080h), зміщення 0000:0120 (0000:0078h) Зміст таблиці бази диска: Зміщення Призначення поля  0 Тайм-аут  1 Використовується ДМА контролером  2 Період відключення мотора НГМД  3 Розмір сектора  4 Номер останнього сектора на доріжці  5 Інтервал для читання/запису  6 Максимальна довжина даних  7 Довжина міжсекторного інтервалу для форматування  8 Символ-заповнювач формату  9 Основний тимчасовий інтервал  10 Час запуску мотора дисковода  Стандартний зміст таблиці бази диска для дискет щільності 360 Кбайт: Зміщення: 0 1 2 3 4 5 6 7 8 9 10  Зміст: DF 02 25 02 09 1У FF 54 F6 01 08   З параметрів бази диска найбільш цікаві наступні: • розмір сектора (0 128 байт, 1 256 байт, 2 512 байт, 3 1024 байти); • номер останнього сектора на доріжці; • міжсекторний інтервал для операцій читання і запису; • міжсекторний інтервал для операції форматування. Змінюючи дані параметри, можливо добитися невірного копіювання, наприклад, за рахунок того, що багато які засоби копіювання (наприклад, COPYWRIT), вирівнюють довжину міжсекторних інтервалів. Іншими способами є: • використання великих довжин секторів; • нестандартна нумерація секторів. Приклад 2. Нестандартне форматування 39-ї доріжки. // таблиця бази диска unsigned char tf[ll]={ 0xDF, 2,0 x25,1,0x12, Ох2А, OxFF, 0x13, OxF6,25,4); unsigned char buf[256]; // установка нової таблиці бази диска і збереження адреси старої seg=peek(0,122); ofs=peek(0,120); poke(0,122,_DS); poke(0,120,(unsigned)tf); _ES=_DS; ntrk=39; for(k=0;k<9;k++){ buf[4*k]=39; buf[4*k+l]=0; buf[4*k+2]=k+l; buf[4*k+3]=l; } flag=biosdisk(5,0, 0,39,1,9, buf); if(flag!=0){ printf("\nERROR on а drive А:"); // установка старої бази диска poke(0,122, seg); poke(0,120, ofs); return(0); } flag=biosdisk(3,0,0,39,1,1, buffer); if(flag!=0){ print f("\nERROR on а drive А:"); // установка старої бази диска poke(0,122, seg); poke(0,120, ofs); return(0); } // установка старої бази диска poke(0,122, seg); poke(0,120, ofs); Сформатовану таким чином доріжку можна прочитати тільки при знанні параметрів таблиці бази диска. Пpuклад 3. Читання нестандартної 39-ї доріжки. ; таблиця бази диска tf db 0DFh, 2,025 h, 1,012 h, 02Ah, 0FFh, 013h, OF6h, 25,4 ; буфер для читання bf db 256 dup (0) ; підготовка нової таблиці бази диска і збереження ; старого значення її сегмента і зміщення mov ax, offset tf mov bx, 0 mov es, bx mov bx, 120 mov cx, es:[bx] mov s_tf_ofs, cx mov es:[bx], ax mov ax, seg tf mov bx, 0 mov es, bx mov bx, 122 mov ex, es:[bx] mov s__tf_seg, cx mov es:[bx], ax ; встановлення параметрів читання: ah - номер функції, ; al скільки секторів вважати mov ax, 00201h ; bx зміщення буфера для читання mov bx, offset bf ; ch - номер доріжки (39), сl - номер сектора mov ex, 02701h ; es сегмент буфера для читання mov dx, seg bf mov es.dx ; dh - головка (поверхня читання), dl - дисковод mov dx, 0 int 13h ; установка старих значень таблиці бази диска mov bx, 0 mov es, bx mov bx, 120 mov cx, s_tf_ofs mov es:[bx], ex mov bx, 0 mov es, bx mov bx, 122 mov cx, s_tf_seg mov es:[bx], ex ; обробка коду помилки cmp ah, 0 je met 0 mov ax, 04C00h int 21h . . . met(): ; продовження при успішному читанні. Порядок виконання роботи лабораторної роботи №1: Модифікувати запропоновані приклади програм №№1-3 для використання дискет щільністю 1,44 Мб. Відлагодити та запустити модифіковані приклади програм №№1-3. Порядок виконання роботи лабораторної роботи №2: Перевірити запис на захищену від копіювання дискету. Перевірити режим копіювання з захищеної від копіювання дискети. Скласти звіт по результатам виконання лабораторної роботи. Лабораторна робота №3 Тема: Створення на доріжці дискети сектора великої довжини. Мета роботи: Зрозуміти метод створення на доріжці дискети сектора великої довжини. Завдання: Написати програму, яка створює на доріжці дискети довгий сектор. Вступ Курс лабораторних робіт базується на лекційному матеріалі з курсу "Системне програмування та операційні системи" та довіднику з мови TURBO-ASSEMBLER. Він дає змогу ознайомитись та вивчити основні особливості цієї мови для практичного застосування. Роз'яснення до завдання. Створення на доріжці дискети сектора великої довжини. У цьому випадку послідовно виконуються 2 кроки: • форматування доріжки з великим числом секторів малої довжини, але в таблиці форматування вказується, що буде зформатований один або декілька секторів великої довжини; • проводиться запис в сектор з великою довжиною. При цьому, зрозуміло. Вам знадобляться 2 таблиці бази диска (див. методичні вказівки до лабораторних робіт №1-2). Приклад. Форматування довгого сектора. #include <dos.h> #include <bios.h> #include <stdio.h> main() { // таблиця бази диска 1 (19 секторів по 256 байт) static unsigned char tfl[ll]=(0xDF, 2,0 х25,1,0х13,0x2A, 0xFF, 0xA, 0xF6,25, 4}; // таблиця бази диска 2 (1 сектор на 8192 байти) static unsigned char tf2[ll]=(0xDF, 2,0 х25,6,0х1,0x2A, 0xFF, 0х50,0 xF6,25,4); int seg_tf, ofs_tf, i.ntrk,flag,sum; // таблиця ідентифікаторів формату static char buf[4]; // буфер для запису довгого сектора static char buffer[8192]; // збереження старої таблиці бази диска seg_tf=peek(0, 122); ofs_tf=peek(0,120); // установка таблиці 1 poke(0,122,_DS); poke(0,120,(unsigned)tf1); _ES=_DS; ntrk=39; for(i=0;i<8192;i++) buffer[i]=l; buf[0]=ntrk; buf[l]=0; buf[2]=l; buf[3]=6; // форматування 19 секторів flag=biosdisk(5,0,0, ntrk, 1,19, buf); if(flag!=0){ printf ( "Помилка форматування %x\n", flag); poke(0,122, seg_tf); poke(0,120, ofs_tf); return(0); } // установка таблиці 2 poke(0,120,(unsigned)tf2); // запис одного сектора flag=biosdisk(3,0,0, ntrk, 1,1, buffer); if(flag!=0){ printf ( "Помилка запису %x\n", flag); poke(0,122, seg_tf); poke(0,120, ofs_tf); return(0); } poke(0,122, seg_tf); poke(0,120, ofs_tf); printf ( "Довгий сектор зформатований успішно.\n"); return(0); } Порядок виконання роботи: Відлагодити та запустити модифікований приклад програми. Перевірити запис на захищену від копіювання дискету. Перевірити режим копіювання з захищеної від копіювання дискети. Скласти звіт по результатам виконання лабораторної роботи. Лабораторні роботи №4 Тема: Захист від копіювання за допомогою простановки фізичної мітки. Мета роботи: Зрозуміти принципи побудови захисту від копіювання за допомогою простановки фізичної мітки. Завдання: Написати програму, яка здійснює пошук BAD-кластера на дискеті. Вступ Курс лабораторних робіт базується на лекційному матеріалі з курсу "Системне програмування та операційні системи" та довіднику з мови TURBO-ASSEMBLER. Він дає змогу ознайомитись та вивчити основні особливості цієї мови для практичного застосування. Роз'яснення до завдання. Простановка фізичної мітки. Ідея методу полягає в тому, що при нанесенні на робочі поверхні дискети пошкоджень, спроби читання або запису секторів, що доводяться на пошкоджені зони, приведе до помилки. Очевидно, що при копіюванні дискети з фізичною міткою пошкоджені зони не утворяться на копії, тому, спроба вважати або записати ті сектори, які на оригіналі були пошкоджені, на копії закінчиться цілком успішно. Цей факт і є критерієм для розрізнення копії і оригіналу. Більш акуратна простановка мітки, наприклад, за допомогою лазера призводить до виникнення, як правило, не більше одного пошкодженого сектора. Алгоритм роботи з лазерною міткою буде приблизно таким: • сформатувати дискету; • пропалити мітку; • визначити шляхом запису і читання в кожний сектор конкретний вигляд і місце мітки; • при перевірці легальності копії в це місце треба записати і зчитати інформацію; • легальна копія дає мітку (помилкове читання або запис) в потрібному місці. Нанесення фізичної мітки досить простий, дешевий і стійкий до копіювання спосіб. Необхідно, правда, зазначити, що якщо читання відбувається через переривання, то виявлення фізичної мітки можна моделювати деякою резидентною програмою, яка перевизначає переривання на себе і повертає необхідний код помилки у разі читання або запису в потрібні сектори. Тому, при використанні фізичної мітки необхідно вжити заходів по «захисту» дискового переривання. Методи отримання міток, що не копіюються на жорстких магнітних дисках Особливостями жорсткого магнітного диска (ЖМД) є: • недоступність робочих поверхонь ЖМД, внаслідок чого виключається можливість нанесення фізичної мітки; • великий об'єм інформаційного поля - тому ускладнене копіювання «диск в диск». Отже, основним методом створення мітки, що не копіюється на ЖМД є форматування доріжок за межами робочого поля. При цьому повинні бути виконані наступні вимоги: • збереження мітки при операціях реорганізації диска, наприклад, з використанням засобу SpeedDisk; • невидимість мітки або її неповторність на іншому диску; • збереження мітки при знищенні захищеною від копіювання інформації (програм) на ЖМД з метою створення архівних копій. У зв'язку з цим не рекомендується вміщувати мітку в завантажувальні сектори, оскільки при цьому вона буде виявлена антивірусними засобами, перевіряючи ці зони на наявність вірусів. Не рекомендується «прив'язувати» програми і дані до їх місцеположення на вінчестері, оскільки реорганізація диска або буде неефективна (якщо інформація помічена як непереміщувана), або захищені програми будуть сприйматися як нелегальні копії, оскільки їх місцеположення на диску зміниться. Можливі наступні підходи до простановки мітки: • Аналіз існуючих особливостей вінчестера: • прив'язка до місцеположення BAD-кластерів; • вимірювання тимчасових параметрів електромеханічної частини ЖМД. • Створення власних відмітних міток: • помітка помилкових BAD-кластерів; • використання операцій довгого читання/запису; • нестандартне форматування невживаної доріжки ЖМД. Для прив'язки до місцеположення BAD-кластерів на вінчестері необхідно визначити тип FAT-таблиці і знайти в ній елементи, відповідні BAD-кластерам, після чого запам'ятати їх положення, а надалі перевіряти їх наявність на фіксованих місцях. Приклад. Пошук BAD-кластера #include <dos.h> #include <io.h> // буфери для читання секторів unsigned char buffer[512], buf[512]; int tg, tg1, SecNum, ByteNum; // номер першого сектора FAT і число секторів в FAT int i_Fat1Sec, i_FatSecs; int i_LoopOffs, i_Ind; int sw_fat; /* прапор типу FAT */ int cur_disk; // Визначення поточного диска cur_dsk=getdisk(); // Визначення типу FAT absread(cur_dsk, 1,0, buf); i_FatSecs = *(int *)(buf+0xl6); if(i_FatSecs * 341 / 4096) sw_fat=l; /* 16- бітова FAT*/ else sw_fat=0; /* 12- бітова FAT */ // Визначення номера початкового сектора FAT i_FatlSec = *(int *)(buf+0x0e); // Цикл пошуку BAD-кластера tg=0; for(i =0; i < i_FatSecs; i++){ //Читання чергового сектора FAT absread(cur_dsk, 1, i_Fat1Sec + i, buffer); if(sw_fat ==1) for(j=0; j < 256; j += 1){ if(buffer[j*2] == 0xf7 && buffer[j*2 + 1] == Oxff){ SecNum = i; ByteNum = j*2; tg=l; /* BAD-кластер знайдений */ break; } } else{ i_LoopOffs = i % 3; /* У 12-і бітової FAT деякі елементи попадають на кордон між секторами, тому не всі сектори починаються з нового елемента, перед ним можуть розташовуватися 1 або 2 байти від попередньої пари елементів */ for(j = 0; j < 170; j++){ i_Ind = j*3 + i_LoopOffs; if(buffer[i_Ind] == 0xf7 && (bufгer[i_Ind+l] & 0x0f) == 0x0f){ SecNum = i; ByteNum = i_Ind; tg=l; /* Виявлений BAD-кластер*/ break; } if (buffer [i_Ind+l] & 0xf0)( == 0х70 && ) (buffer[i_Ind+2] == Oxff){ SecNum = i; ByteNum = i_Ind + 1; tg=l; /* Виявлений BAD-кластер */ break; } } } if(tg ==1) /* Виявлений BAD-кластер, вихід з циклу */ break; } Необхідно відмітити, що простановка помилкових BAD-кластерів може бути помічена користувачем захисту, особливо, якщо до початку експлуатації захищеної програми у нього їх не було. Тому, проставляти помилковий BAD-кластер необхідно або в перше від початку FAT вільне місце (імовірність, що при перенесенні на іншу ПЕОМ цей кластер буде зайнятий, велика, а редагувати ланцюжки FAT ризикне не кожен), або в самий кінець FAT, так щоб його не показували засоби типу SpeedDisk. Порядок виконання роботи: Відлагодити та запустити модифікований приклад програми. Перевірити режим копіювання з захищеної від копіювання дискети. Скласти звіт по результатам виконання лабораторної роботи. Лабораторні роботи № 5 Тема: Застосування операцій довгого читання і довгого запису для захисту від копіювання. Мета роботи: Зрозуміти принципи побудови захисту від копіювання за допомогою застосування операцій довгого читання і довгого запису. Завдання: Написати програму, яка застосовує довгий запис. Вступ Курс лабораторних робіт базується на лекційному матеріалі з курсу "Системне програмування та операційні системи" та довіднику з мови TURBO-ASSEMBLER. Він дає змогу ознайомитись та вивчити основні особливості цієї мови для практичного застосування. Роз'яснення до завдання. Застосування операцій довгого читання і довгого запису. Ці операції виконуються тільки на жорсткому диску і працюють з розширеною до 516 байтів (512+4) довжиною сектора. Отже, якщо зробити операцію довгого запису, а потім операцію звичайного читання, то додаткові 4 байти інформації не будуть виявлені. Вважати записану інформацію повністю можна тільки операцією довгого читання. Крім того, звичайний запис сектора не руйнує додаткової інформації в 4 байтах, тому мітка може бути прихована під звичайною інформацією. Однак, використати один або декілька секторів для зберігання мітки недостатньо, оскільки інформація в додаткових байтах може бути легко виявлена шляхом пошуку по всьому вінчестеру. Тому, цей метод рекомендується або в поєднанні з іншими, або повинні використовуватися мітки у великому числі секторів і операції довгого читання повинні бути замасковані від трасування по дисковим перериванням. Приклад. Довгий _запис. ; Компіляція в. СОМ-файл. . MODEL TINY . CODE org l00h start: push cs; DS = CS pop ds ; ah = 2 функція звичайного читання mov ah, 2 ; al скільки секторів вважати mov al, 1 ; зміщення буфера з інформацією mov bx, offset bf ; ch - доріжка, cl - сектор mov cx, 0003h ; сегмент буфера mov dx, ds mov es, dx ; dh головка, dl ідентифікатор дисковода для жорсткого диска ; dl = 80h, якщо їх два, то 80h і 81 h відповідно mov dx, 0080h int 13h ; ah = 0Bh функція довгого запису mov ah, 0Bh mov al, 1 ; зміщення буфера з інформацією mov bx, off set bf ; ch доріжка, cl сектор mov cx, 0003h ; сегмент буфера mov dx, ds mov es, dx ; dh - головка, dl - ідентифікатор дисковода mov dx, 0080h infc 13h ; обнулимо доповнення в 4 байта mov word ptr dop, 0 mov word ptr dop+2,0 ; ah = 0Ah - функція довгого читання ; контрольне читання mov ah, 0Ah mov а 1,1
Антиботан аватар за замовчуванням

23.05.2013 19:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!