Міністерство освіти і наукиУкраїни
Національний університет “Львівська політехніка”
Кафедра САПР
Курсова робота
З дисципліни
“Системне програмування та операційні системи”
На тему :
“Захист файлів від копіювання ”
Виконав :
Студент групи КН
Львів 2008р
Анотація
Курсова робота з курсу “Системного програмування та операційні системи”.
Захист файлів від копіювання /Оксенчук С.М., Львів: Національний університет “Львівська політехніка”, 2008.-22 с.
Обсяг даної курсової роботи включно із кодом програм становить 22 сторінок. Курсова робота складається з 3-ох розділів, у яких наведено основні теоретичні відомості про мову програмування Асемблер та файлові системи. Описано основні функції та алгоритм.
Курсова робота ставить ціль – програму для захисту файлів від копіювання.
Кафедра ” Системи автоматизованого проектування ”
Дисципліна Сиситемне програмування і операційні системи
Спеціальність Комп’ютерні науки
Курс 2 Група КН-213 Семестр 4 .
Завдання
на курсовий проект студента
Оксенчук Сергій Миколайович
/прізвище, ім’я, по - батькові/
1. Тема проекту /роботи/ Захист від копіювання
2. Термін здачі студентом закінченого проекту /роботи/ 19.05.2008 р.
3. Вихідні дані для проекту /роботи/
Загальна характеристика програми
Основні команди та функції для написання програми
4. Зміст розрахунково-пояснювальної записки /перелік питань, які підлягають розробці/
Вступна частина
Аналіз мови програмування Асемблер
Аналіз файлових систем
Реалізація програми
Аналіз складання алгоритму
Висновки
6. Дата видачі завдання 24.02.2008 р.
№ п/п
Назва етапів курсового проекту ( роботи )
Термін виконання етапів проекту ( роботи )
Примітки
1.
Отримання завдання
24.02.2008 р.
2.
Уточнення завдання
10.03.2008 р.
3.
Аналіз книжки ”Асемблер”
2 тиждні
4.
Оформлення вступної частини
24.03.2008 р.
5.
Розробка 2 розділу пояснювальної записки „Система програмування на Асемблері”
7.04.2008 р.
6.
Розробка 3 розділу пояснювальної записки „Файлові системи”
21.04.2008 р.
7.
Розробка 4 розділу пояснювальної записки „Реалізація програми”
5.05.2008 р.
8.
Попередній перегляд проекту викладачем і виправлення помилок
12.05.2008 р.
9.
Здача курсового проекту
19.05.2008 р.
Студент
Оксенчук Сергій Миколайович
( підпис )
( прізвище, ім’я, по-батькові )
Керівник
Фармага Ігор Вірославович
( підпис )
( прізвище, ім’я, по-батькові )
____________________2008 р
Національни університет ” Львівська політехніка”
/назва вищого учбового закладу/
ЗМІСТ
Вступ 6
СИСТЕМА ПРОГРАМУВАННЯ НА АСЕМБЛЕРІ 7
Асемблер як мова програмування 7
Структура програми на Асемблері 7
Структура операндів 9
Способи адресації 9
Класифікація команд 10
ФАЙЛОВІ СИСТЕМИ 12
Класифікація файлових систем 12
Переваги файлової системи NTFS 13
Файлова система FAT 13
Файлова система DOS 15
FAT захищеного режиму 15
Операційні та файлові системи FAT 16
Текст програми 19
КОРОТКИЙ ОПИС АЛГОРИТМУ 21
Висновок 22
Вступ
Питання на рахунок захисту інформації є дуже актуальним на сьогоднішній день. Інформація яка має велику цінність коштує не малі гроші. І щоб захистити дану інформацію, розробляють програми для захисту від копіювання. Моя програма написана на мові програмування Асемблер. Працює вона в сумісності з структура програми та операндів файловим менеджером Norton Commander. У цій пояснювальній записці я описав наступні розділи : СИСТЕМА ПРОГРАМУВАННЯ НА АСЕМБЛЕРІ . У даному розділі детально описуються нюанси мови програмування Асемблер, структура програми та операндів способи адресації ,класифікація команд. Наступним розділом є файлові системи. Тут розписана інформація про файлові системи типу NTFS,FAT,DOS. Наступним розділом є текст програми та коротка інструкція по роботі з нею. Після цього наступний розділ− короткий опис алгоритму який використовувався при написанні даної програми. І в кінці висновок на рахунок даної курсової роботи.
СИСТЕМА ПРОГРАМУВАННЯ НА АСЕМБЛЕРІ
Асемблер як мова програмування
Асемблер є мовою програмування низького рівня. Він забезпечує написання, відладку та виконання програм на рівні близькому до машинних команд. Основна область застосування Асемблера - написання високоефективних програм системного характеру (драйверів, динамічна відеографіка, обробка сигналів в режимі реального часу, тощо).
Програмування на Асемблері базується на системі програмування, яка забезпечує перехід від початкового файлу з текстом програми до завантаженого файлу, готового до виконання (інтерпретації мікропроцесором).
Реалізація програми на Асемблері охоплює такі етапи:
- написання програми на мові Асемблера, ввід та оформлення її у вигляді початкового файлу за допомогою текстового редактора (наприклад, Nогtоn Соmmander);
- трансляція початкового файлу в об'єктний файл;
- редагування зв'язків на основі декількох об'єктних файлів і формування завантаженого файлу для інтерпретації мікропроцесором.
Така схема забезпечує незалежне асемблювання кількох початкових файлів з подальшим їх об'єднанням на рівні об'єктних файлів в один завантажений. Вказаний підхід реалізує концепції модульного програмування (розробка та реалізація програм по частинах - модулях). Відповідно розглядають початковий модуль, об'єктний модуль та завантажений модуль. Відомі і простіші схеми асемблювання, які забезпечують, перехід, від рівня початкових файлів до завантажених.
Структура програми на Асемблері
Програма. на Асемблері складається з модулів. Модулі складаються з сегментів. Сегменти складаються з процедур, команд та директив.
Початковий програмний модуль складається з операторів. Виділяються оператори трьох типів: команди, директиви, коментар. Оператори команд визначають операції, які виконує процесор. Директиви вказують Асемблеру та Редактору зв'язків як оформляти (об'єднувати) команди та модулі в програму. Директиви також забезпечують розподіл пам'яті та визначення даних.
Оператори команд складаються з символічного імені, коду операції, поля операндів та коментарі. Код операції визначає команду і відрізняє її від директиви. При написанні програми на Асемблері символічне ім’я ставиться перед кодом операції через двокрапку і називається міткою (внутрішньою). Мітка визначає адресу команди в оперативній пам'яті, що може використовуватись, наприклад, операторами переходу.
Операнди (два, один, або відсутні) визначають дані над якими виконуються операції процесором. Операнди відділяються один від одного комою, а від коду команди - пропуском.
Коментар відділяється від полів команди та операндів пропуском та крапкою з комою. Він не приймає участі в асемблюванні і служить лише для документування програми.
Оператори директив складаються з символічного імені, коду псевдооперації, поля операндів та коментаря. Структура директиви аналогічна структурі команди. Код псевдооперації визначає зміст директиви.
Операндів директиви може бути декілька і вони розділяються комами, а від коду псевдооперації відділяються пропуском.
Символічне ім'я, яке стоїть на початку директиви розподілу пам'яті (директиви визначення) називається змінною. Символічне ім'я директиви відділяється від коду пропуском, а не двокрапкою, як мітка.
Коментар записується через пропуск та крапку з комою.
Програма складається з модулів, які можуть бути паралельно розроблені та реалізовані. Кожний модуль складається з операторів, які обробляються (транслюються) Асемблером. Для транслятора признакою кінця операторів модуля є директива - ЕND (Кінець). Крім того операнд директиви END визначає точку входу програми.
Кожний модуль поділяється на окремі частини директивами сегментації, які визначають початок (SEGMENT) та кінець (ENDS) сегмента. Кожен із сегментів (типів сегментів) має певні функції і забезпечує структуризацію програм. Всі сегменти поіменовані (SSEG - стековий сегмент, CSEG - програмний сегмент, DSEG - сегмент даних, ESEG - додатковий сегмент даних). Директива ASSUME зв'язує довільні імена з сегментами відповідного типу. Типи сегментів визначають функції, що вони виконують (SS, ES та-DS - визначення даних, CS - послідовність команд, а також, директив, що групують ці команди у блоки).
Програмний сегмент поділяється на частини директивами визначення процедур (по іменованих). Процедури близькі до підпрограм, але вони знаходяться, у складі початкового модуля. Основні складові програми вказані на прикладі
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,ES:ESEG,SS:SSEG
START PROC FAR
PUSH DS
PAD: MOV BX,DSEG
CALL MAIN
MOV AX,4C00H
INT 21H
START ENDP
MAIN PROC NEAR
MOV AM,CATS
. . . RET
MAIN ENDP
CSEG ENDS
END START
Структура операндів
Виділяють два основних типи операндів: регістровий та операнд в оперативній пам'яті. Команда може мати 0,1,2 операнди. Якщо операнд один, то він або регістровий, або в оперативній пам'яті. Якщо їх два, то один регістровий, а інший в оперативній пам'яті. Операнд в регістрі визначається ім'ям цього регістра. Операнд в оперативній пам'яті визначається вмістом регістрів, поіменованих символічними іменами, областями оперативної пам'яті та константами - це визначає спосіб адресації.
Способи адресації
Безпосередня адресація:
MOV DX,3451H ; (3451H - абсолютна адреса)
MOV DX,OFFSET CATS ; адреса, змінної CATS відносно початку сегмента)
Індексна адресація:
MOV DX,[SI] ; (посередня адресація)
Відносна адресація:
MOV DX,[BX] ; (посередня адресація)
Адресація з індексацією та базуванням:
MOV [DX+SI] ; (посередня адресація)
Пряма адресація:
MOV DX,CATS
Пряма адресація з індексацією:
MOV DX,CATS[SI]
Пряма адресація з базуванням:
MOV DX,CATS[BX]
Пряма адресація з індексацією та базуванням:
MOV DX,CATS[BX+SI]
Якщо операнд заданий константою (безпосередня адресація), то він обробляється, як дані (при трансляції підставляється адреса цієї константи). Якщо в операнді вказане ім'я, то це - різновидність прямої адресації. Якщо в операнді імені немає, а є регістри (індексний чи базовий) в квадратних дужках, то це - посередня, адресація, бо адреса визначається через вміст регістрів. Коли є ім’я і регістри, то це пряма адресація з базуванням та індексуванням.
Класифікація команд:
Команди передачі даних MOV
Приклади:
MOV AH,CATS
MOV AX,BX
MOV AH,AL
MOV AH,6
Команди порівняння CMP, TEST, умовного JE, JG, JL, JNE, та безумовного JMP переходу
Приклади:
JMP FAD
CMP AH,01
JE C1
CMP AH,01
JNE C2
Команди виклику та повернення з процедури (підпрограми) CALL, RET
Приклад:
CALL PG
RET 4
Команди роботи зі стеком PUSH, POP
Приклад:
PUSH AX
POP
Команди роботи зі стрічковими даними LOADSB, MOVSB
Приклад:
MOV SI, OFFSET CATS
MOV DI, OFFSET RATS
MOV CX,3
REP MOVSB
Команда циклу LOOP
Приклад:
MOV CX,14
MOV SI,0
DAD: MOV AX,CAT[SI]
. . .
INC SI
LOOP DAD
. . .
MOV CX,10
C1: PUSH CH MOV CX,20
C2: PUSH CX
MOV CX,30
C3: MOV AX,B2
LOOP C3
POP CX
LOOP C2
POP CX
LOOP C1
Команди побітової обробки
AND AX,OFFOOH ; (логічне множення)
OR AX,OFFOOH ; (логічне додавання)
XOR AH,OF1H
TEST AX,BX ; (виконується аналогічно AND, однак операнди не міняються)
Команди зсуву
SHR AL,1 ; (вправо)
MOV CL,3
SHL AL,CL ; (вліво)
SAR AL,1 ; (арифметичний зсув вправо)
ROR AL,1 ; (циклічний зсув вправо)
ROR AL,1 ; (циклічний зсув вправо з переносом)
Арифметичні команди
ADD AX,DX ; (додавання)
SUB AX,AX ; (віднімання)
MUL BX ; (множення)
DIV BX ; (ділення)
Команди переривання INT, STI, CLI
Команди вводу/виводу
IN AX,DX
OUT DX,AX
Команди роботи з прапорцями (признаками)
TEST AX,01100B
Команди керування HLT,WAIT
Команди завантаження сегментів LDS, LES
ФАЙЛОВІ СИСТЕМИ
Файлова система – формат даних, який використовуються операційною системою для збереження інформації про файли на логічному томі. Також цим поняттям позначають сукупність файлів та директорій, які розміщуються на одному логічному томі. Логічний том, на якому створено файлову систему, називають форматованим. Деякі файлові системи: FAT 16, FAT 32, NTFS.
Класифікація файлових систем
За призначенням файлові системи можна класифікувати на наступні категорії:
• для носіїв з довільним доступом (наприклад, жорсткий диск): FAT32, HPFS, ext2 і ін. • для носіїв з послідовним доступом (наприклад, магнітні стрічки): QIC. • для оптичних носіїв – CD і DVD: ISO9660, ISO9690, HFS, UDF.
• віртуальні файлові системи: AEFS і ін. • мережні файлові системи: NFS, SMBFS, SSHFS, Gmailfs.
Однією з основних переваг операційної системи Windows XP Professional є підтримка файлової системи NTFS. Під файловою системою мається на увазі спосіб іменування, збереження та упорядкування файлів на комп'ютері. Завдяки можливості шифрувати файли та папки, і встановлювати заборону на доступ до них. Використання файлової системи NTFS підвищує безпеку комп'ютера. Файлова система NTFS безпечна та надійна. Вона забезпечує більш високу швидкодію, ніж файлові системи FAT16 і FAT32, використовувані в Windows Me, Windows 98 і Windows 95.Файлова система NTFS підтримується в операційних системах Windows NT Workstation і Windows 2000 Professional, але не підтримується в Windows Me, Windows 98 і Windows 95.
Переваги файлової системи NTFS
Технологія шифрованої файлової системи (Encrypting File System – EFS), використовувана в операційній системі Windows XP, допомагає захистити важливі дані. Файл, зашифрований за допомогою технології EFS, може бути відкритий тільки тим користувачем, який його зашифрував. Особливо зручно використовувати цю технологію на переносних комп'ютерах. У випадку, якщо такий комп'ютер буде загублений чи вкрадений, ніхто не зможе одержати доступ до файлів, що зберігаються на жорсткому диску.
Операційна система Windows XP підтримує три файлові системи: NTFS, FAT16 і FAT32, тому на одному комп'ютері можна запускати не тільки Windows XP, але й більш ранні версії Windows, використовуючи конфігурацію з подвійним завантаженням.
Файлова система FAT
Перший байт FAT називається "Описувач середовища" (Media Descriptor) або байт ID ідентифікації FAT. Він має таке ж значення, як і байт-описувач середовища, що знаходиться в BOOT-секторі логічного диска. Наступні 5 байтів для 12-бітового формату або 7 байтів для 16-бітового формату завжди містять значення 0ffh. Вся інша частина FAT складається з 12-бітових або 16-бітових комірок, кожна комірка відповідає одному кластеру диска. Ці комірки можуть містити такі значення: FAT12 FAT16
000h0000h – вільний кластер,
ff0h - ff6hfff0h - fff6h – зарезервований кластер,
ff7hfff7h – поганий кластер,
ff8h - fffhfff8h - ffffh – останній кластер у списку,
002h - fefh0002h - ffefh – номер такого кластера в списку.
Безпосередній доступ до FAT може знадобитися для:
• організації сканування каталогів для пошуку потрібних файлів;
• для читання каталогів як файлів;
• для організації захисту інформації від несанкціонованого копіювання.
Загальна схема використання FAT така:
• читаємо FAT у пам'ять. Як уже зазначалося FAT розташовується відразу після BOOT-сектора (логічний сектор із номером 1). Для точного визначення початкового сектора FAT потрібно прочитати у пам'ять BOOT-сектор і проаналізувати вміст блока параметрів BIOS. У поле ressecs записана кількість зарезервованих секторів, що розташовуються перед FAT. Поле fatsize містить розмір FAT у секторах. Крім того, варто враховувати, що на диску може знаходитися декілька копій FAT. Операційна система використовує тільки першу копію, інші потрібні для утіліт відновлення вмісту диска. Кількість копій FAT знаходиться в полі fatcnt BOOT-сектора;
• потім необхідно визначити номер першого кластера файла, для якого необхідно визначити його розташування на диску;
• використовуємо номер першого кластера як індекс у FAT для отримання номера такого кластера.
Повторюємо цю процедуру доти, поки отримане з FAT значення не буде відповідати кінцю файла. Процедура витягу номера кластера з FAT залежить від формату таблиці розміщення файлів. 16-бітову FAT можна уявити як масив 16-бітових чисел. Для визначення номера такого кластера треба просто отримати 16-бітове значення з FAT, використавши в якості індексу номер попереднього кластера. Для 12-бітової FAT процедура значно складніша. Необхідно виконати такі дії:
• помножити номер початкового кластера на 3;
• розділити результат на 2 (тому що кожний елемент таблиці має довжину 1.5 байта);
• прочитати 16-бітове слово з FAT, використовуючи в якості зсуву значення, отримане після ділення на 2;
• якщо номер початкового кластера парний, на вибране з FAT слово треба накласти маску 0fffh, залишивши молодші 12 бітів. Якщо номер початкового кластера не парний, вибране з FAT значення необхідно зсунути вправо на 4 біта, залишивши старші 12 біт;
• отриманий результат – номер такого кластера в ланцюгу, значення 0fffh відповідає кінцю ланцюга кластерів.
Файлова система DOS
Файлова система DOS має деревоподібну структуру. У кореневому каталозі розташовуються 32-байтові елементи, що містять інформацію про файли й інші каталоги. Для читання кореневого каталога необхідно визначити його розташування і розмір. Кореневий каталог знаходиться відразу за останньою копією FAT. Кількість секторів, що займаються однією копією FAT, знаходиться в блоці параметрів BIOS у BOOT-секторі в полі fatsize, кількість копій FAT – у полі fatcnt блока BPB. Отже, перед кореневим каталогом знаходиться один BOOT-сектор і (fatcnt_*_fatsize) секторів таблиці розміщення файлів FAT.
Розмір кореневого каталога можна визначити виходячи із значення поля rootsize. У цьому полі при форматуванні диска записується максимальна кількість файлів і каталогів, що можуть знаходитися в кореневому каталозі. Для кожного елемента в каталозі виділяється 32 байта, тому кореневий каталог має довжину (32_*_rootsize) байтів.
Після кореневого каталога на логічному диску знаходиться область файлів і підкаталогів кореневого каталога. На малюнку зображені всі області логічного диска. Таку структуру мають логічні диски, розташовані в розділах жорстких дисків, а також дискети.
FAT захищеного режиму
FAT захищеного режиму – це стандартна файлова система, яка використовується Windows 95 для пристроїв масової пам`яті, наприклад, для дисководів і жорстких дисків. FAT захищеного режиму сумісна з FAT MS-DOS і також зберігає інформацію про вміст диску на основі таблиці розміщення файлів і записів в каталогах. Крім того, FAT захищеного режиму підтримує довгі імена і зберігає дату і час створення файла, а також дату останнього доступу. У FAT захищеного режиму допустимі імена файлів довжиною до 256 символів, включаючи нульовий завершаючий символ. В цьому плані вона схожа з фйловою системою Microsoft Windows NT (NTFS), яка теж працює з довжиною файлів до 256 символів. Довжина шляху в FAT захищеного режиму (без імені самого файлу) може бути до 246 символів (сюди входять ім’я диску, дві крапки і зворотній слеш). Максимальне число символів в повному імені файлів (разом з іменем диска, двокрапкою, шляхом і завершальним нульовим символом) рівне 260. Коли додаток створює файл чи каталог з довгими іменами, сичтема автоматично генерує для нього відповідний псевдонім в стандартному форматі "8.3", використовуючи ті символи, які допустимі в FAT MS-DOS. До них відносять будь-які комбінації латинських букв, цифр і символів з ASCII-кодами більше 127, а також пробіл і спеціальні символи:
!%()_-@`~{}&#^$'
Не дивлячись на те, що пробіл допустимий в іменах файлів та каталогів у попередніх версіях DOS, багато додатків не признають їх. По цій причині операційна система, генеруючи псевдонім для довгих імен, не використовує пробіли. Крім того, MS-DOS не відрізняє в іменах файлів і каталогів букви верхнього і нижнього регістрів, це поширюється і на псевдоніми. Windows 95 зберігає регістр букв, вказаних в довгих іменах файлів. Але FAT захищеного режиму, не враховує регістр букв, і не дозволить створити в одному каталозі двох файлів наприклад з такими іменами FileName і filename.
Операційні та файлові системи FAT
Сьогодні FAT явно не є найдосконалішою з файлових систем, хоча і підтримується всіма ОС. Майже кожна операційна система пропонує власні формати, які мають переваги у відношенні збереження даних, швидкості доступу, використання об’єму жорсткого диску і т.п. Так, наприклад, при застосуванні Windows NT слід вибирати NTFS, якщо основними вимогами є надійність і швидкість. Правда при певних обставинах може самозаблокуватися, якщо із-за проблем в апаратній частині чи в програмному забезпеченні виявиться неможливим запустити цю операційну систему. До цих даних не можна буде звернутися навіть з допомогою іншої операційної системи. До файлової системи FAT16 може звертатися практично будь-яка ОС. Якщо створити первинний розділ в цьому форматі і якщо цей розділ має розмір до 1ГБ, то це найкращі умови для інсталяції декількох різних операційних систем на одному ПК. Існуючі розділи можуть зменшуватися або ділитися без втрати даних лише з допомогою комерційних допоміжних програм, наприклад Partition Magic. Користувач, який бажає розмістити на одному ПК довільну комбінацію самостійно загружаючих систем DOS, Windows 95/98 i NT 4.0 з можливістю сумісного доступу до масивів, не обійдеться без FAT16. Правда, перевагам сумісного використання масивів даних і програм протистоять деякі недоліки.
Під традиційними версіями MS-DOS включно до версії 6,22 неможливо, наприклад, мати безпосередній доступ до файлів з довгими іменами, які використовуються Windows 95/98 або NT 4.0; такий доступ можна мати лише до файлів скороченими до 8 символів іменами MS-DOS і розширенням з трьох символів (формат 8.3). Якщо ви записуєте, переносите чи копіюєте в MS-DOS 6.22 і більш ранніх версіях файл, що має довге ім’я, то таке ім’я обрізається до формату 8.3. Ще неприємнішим є те, що деякі DOS чи Windows-програми оптимізації файлової системи при використанні їх у файлових системах Windows 95/98 чи NT 4.0 замість користі приносять шкоду, тому що заплутують таблицю розміщення файлів і структури директорій (наприклад, більш старі версії Norton Disk Doctor). Таким чином, програми DOS, які безпосередньо маніпулюють структурами директорій або FAT, застосовувати на FAT16 не можна. Ще один недолік файлового формату FAT16 максимальна ємність диску: з його використанням можна адресувати лише 2047 МБ на одному розділі. До того ж ці трохи більше 2 ГБ використовують ще дещо більше пам’яті оскільки FAT16 в цьому випадку розмір кластерів у 32 КБ. Це стає замітним при великій кількості малих файлів. Навіть дуже малі файли в будь-якому випадку займають не менше 32КБ пам’яті жорсткого диску.
FAT32 підтримується Windows 95 OSR2, Windows 98 і Linux (починаючи з Kernel 2.0.34), а також майбутньою Windows NT5.0. Файлова система FAT32 дозволяє установити мінімальний розмір кластерів всього в 4КБ (замість 32КБ) навіть для дисків ємністю до 8 Гбайт. FAT12 і FAT16 вони також підтримують. Старіші версії Windows 95, NT 4.x, Linux, на жаль, не підтримують FAT32. Таким чином, для обміну даними між будь-якими операційними системами у випадку використання файлової системи FAT32 шлях закритий.
ОС/Файлова система
FAT16
FAT32
DOS/Windows 3.x
+
–
Windows 95
+
(+) починаючи з OSR2
Windows 98
+
+
Windows NT до 4.х
+
–
Windows NT 5.0 (*)
+
+
OS/2
+
–
Linux
+
(+) починаючи з ядра 2.0.34
Текст програми
Текст програми, що реалізовує захист від копіювання вказаного файлу
.model small
.code
.386
org 2Ch
envseg dw ?
org 80h
cmd_len db ?
cmd_line db ?
org 100h
START:
old_int21h:
jmp short initialize
dw 0
int21h_handler proc far
pushf
cmp ah, 3Ch
je fn3Ch
cmp ax, 716Ch
je fn3Ch
jmp short not_fn41h
fn3Ch:
push AX
push BX
mov BX, DX
cmp byte ptr ds:[bx+0],':'
je full_spec
mov ah, 19h
int 21h
add al, 'A'
jmp short compare
full_spec:
mov al, byte ptr [BX]
and al, 11011111b
compare:
cmp al, byte ptr cs:cmd_line[1]
je access_denied
pop BX
pop AX
not_fn41h:
popf
jmp dword ptr cs:old_int21h
access_denied:
pop BX
pop AX
popf
push bp
mov bp, sp
or word ptr [bp+6], 1
pop bp
mov ax, 5
iret
int21h_handler endp
initialize proc near
cmp byte ptr cmd_len, 3
jne not_install
cmp byte ptr cmd_line[2],':'
jne not_install
mov al, byte ptr cmd_line[1]
and al, 11011111b
cmp al, 'A'
jb not_install
cmp al, 'Z'
mov AX, 3521h
int 21h
mov word ptr old_int21h, BX
mov word ptr old_int21h+2, ES
mov AX, 2521h
mov DX, offset int21h_handler
int 21h
mov AH, 49
mov ES, word ptr envseg
int 21h
mov DX, offset initialize
int 27h
not_install:
mov AH, 9
mov DX, offset usage
int 21h
ret
usage db "‚ЁЄ®аЁбв п TSR.COM ",0Dh ,0Ah
db "‡ Ў®а®пн Є®Їiоў п д ©«лў § § ¤ ®Ј® ¤ЁбЄг",0Dh, 0Ah
db "$"
initialize endp
end start
Додаток
Дана програма працює тільки в сумісності з файловим менеджером Norton Commander. Для того щоб захистити файл від копіювання потрібно запустити Norton Commander, ввести шлях до самої програми ,а потім через пробіл шлях до файлу який ми хочемо захистити.
КОРОТКИЙ ОПИС АЛГОРИТМУ
Серед функцій переривання 21Н є функції, що призначені для роботи з файлами:
3СН – створити або скопіювати короткий файл;
6СН – розширене відкриття файлу (поєднує функції 3СН, 3DH – відкриття файлу і 5BH – створення нового файлу) або копіювання довгих файлів.
Для перезапису старого файлу з таким же ім’ям, наприклад, при копіюванні використовуються відповідно функції 3СН і 6СН, в залежності від розміру файлу.
Дана програма базується на перехопленні переривання 21Н і забороні створення нового файлу. Тобто ми перевіряємо, чи номер функції є потрібним для нас (3СН або 6СН). Якщо так, то ми перевіряємо, чи буква диску, яка є в команді збігається з буквою диску, яку ми зберегли під час ініціалізації, якщо не збігається, то ми передаємо керування обробнику переривання 21Н. Проте, якщо номер функції не такий, як нам потрібно, то ми передаємо керування обробнику переривання 21Н і відновлюємо регістри, що були збережені в пам’яті.
висновок
У даній курсовій роботі я розробив програму для захисту від копіювання на мові програмування Асемблер. У своїй роботі я використав функції Dos для роботи з файлами і дисками, цим самим показавши свої знання і вміння роботи з цими функціями. Питання заборони від копіювання та захисту інформації є актуальною на сьогоднішній день, тому розробка програм такого типу має велику цінність.