Рефераты. Захист від несанкціонованого доступу

Якщо потрібно виключити копіювання програми з жорсткого диска на інший жорсткий диск, її можна прив'язати до номера кластера або сектора, із якого починається файл програми на диску. Прив'язка здійснюється в такий спосіб. Спеціально підготовлена установча програма відкриває файл із робочою програмою і по таблиці відкритих файлів знаходить початковий номер кластера. Це число, що є своєрідним ключем, записується установчою програмою у визначене місце файла робочої програми ( у поле даних). Робоча ж програма після запуску насамперед виконує ту ж операцію - визначає свою початкову адресу, а потім порівнює його з ключем. Якщо числа збігаються, програма приступає до виконання своєї змістовної частини; якщо не збігаються - аварийно завершується. При копіюванні програми на інший диск (або навіть на той же самий) вона виявиться розташованої в іншому місці і номер кластера, записаний нустановчою програмою вже не буде відповідати реальній адресі файла. У той же час за допомогою установчої дискети програму неважко встановити на будь-якому диску.

Ключова дискета з нестандартним форматом

Достатньо надійний засіб захисту програм від переносу на інші комп'ютери полягає у використанні ключової дискети. У цьому випадку робоча програма, що знаходиться на жорсткому диску, перед початком роботи перевіряє наявність на дисководі дискети з ключовою інформацією. Для того, щоб ключову дискету не можна було розмножити за допомогою команди DISKCOPY, що здійснює копіювання на фізичному рівні, ключова інформація записується на доріжці з нестандартним форматом, розташованої до того ж за межами робочого простору диска. Така ключова дискета підготовляється спеціальною установчою програмою, що за допомогою функції 05h переривання BIOS 13h, форматує, наприклад, доріжку номер 40 (або 80) із розміром сектора 256 байтів замість 512 і записує на її заданий ключ. Робоча програма перед початком роботи виконує читання нестандартної доріжки і при відсутності самої доріжки або ключа на ній аварийно завершується. Такий засіб зручний тим, що користувач, придбавши програмний продукт із ключовою дискетою, може вільно переносити його з комп'ютера на комп'ютер і навіть запускати його на декількох комп'ютерах одночасно, але не має можливості передати програмний пакет третій особі (не позбавивши себе ключової дискети).

Очевидно, що для жорсткості захисту розглянуті методи можуть використовуватися спільно в різноманітних комбінаціях.

Постанова задачі та методи її реалізації. Захист від НСД шляхом запису ключа за логічними межами файла

Як відомо, DOS виділяє місце під файли цілими кластерами, у результаті чого за логічним кінцем файла практично завжди є вільний простір (до кінця кластера). При копіюванні файла на інший диск реально переносяться тільки байти, що відповідають самому файлу, тому що число байтів що копіюються визначається логічною довжиною файла. Байти останнього кластера файла, що знаходяться за логічними межами файла, не копіюються. Якщо в них записати ключ, то при копіюванні ключ зникне. Після запису робочої програми на жорсткий диск вона встановлюється за допомогою спеціальної установчої програми (яка зберігається на дискеті). Установча програма відкриває файл із робочою програмою, переміщюає вказівник файла на його кінець і записує ключ (одне або декілька слів) за старими межами файла. Потім за допомогою засобів DOS файл укорочується до старої довжини. У результаті ключ надається фізично прилягаючим до файла, але логічно за його межами.

При використанні цього методу установча програма повинна перед записом ключа проаналізувати довжину файла. Якщо файл займає ціле число кластерів, його попередньо варто подовжити так, щоб він зайняв частину такого кластера, інакше нікуди буде записати ключ. Те ж утвориться, якщо, скажемо, при довжині ключа 2 байта файл займає ціле число кластеров мінус 1 байт. У цьому випадку файл також потребує подовження. Робоча програма після запуску виконує ті ж операції, що і установча (за винятком подовження файла) і перевіряє, чи записаний відомий їй ключ за кінцем файла.

Процес підготування програми на мові ассемблера

Процес підготування і налагодження програми включає такі етапи:

підготування вихідного тексту програми за допомогою будь-якого текстового редактора. Файл із вихідним текстом повинний мати розширення . ASM;

трансляція програми за допомогою ассемблера MASM. EXE із метою одержання об'єктного файла;

компонування об'єктного модуля за допомогою компоновника LINK. ЕХЕ з метою одержання завантажувального файла

При виборі редактора для підготування вихідного тексту програми варто мати на увазі, що багато текстових процесорів (наприклад, Microsoft Word) додають у вихідний файл службову інформацію. Тому варто скористатися редактором, що виводить у вихідний файл "чистий текст", без яких-небудь керуючих символів. До таких редакторів відносяться, наприклад, широко поширені в нас Лексикон, Norton Editor і ін. Якщо файл із вихідним текстом програми названий P.ASM, то рядок виклику ассемблера може мати такий вид:

MASM IZ /ZI /N Р.Р.Р;

Ключ /Z дозволяє вивод на екран рядків вихідного тексту програми, у яких ассемблер виявив помилки (без цього ключа пошук помилок прийшлося б проводити по листингу трансляції).

Ключ /ZI управляє включенням в об'єктний файл номерів рядків вихідної програми й іншої інформації, не необхідної при виконанні програми, але використовуваної відлагоджувальником CodeView.

Ключ /N не включає висновок у листинг переліку символічних позначень у програмі, від чого декілька зменшується інформативність листинга, але істотно скорочується його розмір.

Параметри, що знаходяться далі, визначають імена модулів: вихідного (P. ASM), об'єктного (P. OBJ) і листинга (P. LST). Точка з комою не включає формування файла P. CRF.

Рядок виклику компоновника може мати такий вигляд:

LINK /CO Р,Р;

Ключ /З передає в завантажувальний файл символьну інформацію, що дозволяє відлагоджувальнику CV виводити на екран повний текст вихідної програми, включаючи мітки, коментарі та ін. Параметри, що знаходяться далі, позначають імена модулів: об'єктного (P. OBJ) і завантажувального (Р.ЕХЕ). Точка з комою не включає формування файла з листингом компонування (Р.МАР) і використання бібліотечного файла з об'єктними модулями підпрограм.

Компоновник створює завантажувальний модуль у форматі . ЕХЕ. Якщо вихідна програма написана у форматі . СОМ, то після трансляції і компонування її треба перетворити у файл типу . СОМ. Для цього використовується включена до складу DOS зовнішня команда EXE2BIN:

EXE2BIN P P. COM

Перший параметр позначає вихідний для команди EXE2BIN завантажувальний файл Р.ЕХЕ, другий - очікуваний результат перетворення. Вказівка розширення .СОМ у другому параметрі обов'язкова, тому що по замовчанню команда EXE2BIN створює файл із розширенням . BIN.

Використання інтерактивного відлагоджувальника CodeView Microsoft

Інтерактивний відлагоджувальник CodeView дозволяє виконувати програму по кроках або з точками останова, виводити на екран вміст регістрів і областей пам'яті, модифікувати (у відомих межах) завантажену в пам'ять програму, примусово змінювати вміст регістрів і виконувати інші дії, що дозволяють у наочній і зручній формі відлагоджувати програми, написані на мові ассемблера. відлагоджувальник запускається командою

CV Р.ЕХЕ

де Р.ЕХЕ - ім'я файла з відлагодженою програмою. У процесі роботи відлагоджувальник використовує також файл із вихідним модулем P. ASM.

Реалізація задачі

Задача по забезпеченню захисту програм від копіювання шляхом запису ключа в порожнє місце кластера за межами файлу з програмою потребує написання робочої програми WORK3.EXE, яка виводить на екран текст, що відповідає конкретному випадку завершення програми.

На початку програма читає перше слово за логічним кінцем файла WORK3.EXE, читає його ключ і порівнює його з ключем записаним в програмі. Якщо ключі не співпадають , програма аварійно завершується та видає відповідне повідомлення. В противному випадку програма видає повідомлення про нормальну роботу файла. Робоча програма потребує встановлення на жорсткому диску.

Також задача потребує написання установчої програми INSTALL3.EXE, яка призначена для установки на жорсткому диску робочої програми WORK3.EXE.

Установча програма записує за логічним кінцем файла робочої програми WORK3.EXE заданий ключ, попередньо проаналізувавши довжину файла WORK3.EXE і подовживши його на два байта (тобто фактично на цілий кластер), якщо за межами файла, але до кінця останнього зайнятого файлом кластера, не має місця для запису ключа.

Список скорочень

ПК - персональний комп'ютер.

НСД - несанкціонований доступ.

Список літератури

Финогенов К.Г. “Самоучитель по системным функциям MS-DOC”.

Скэнлон Л. “Персональные ЭВМ IBM PC и XT”

Фигурнов: "Работа пользователя с IBM PC".

Громов В.И. Васильев Г.А. "Энциклопедия компьютерной безопасности."

Текст програми

Програма WORK3. EXE

;Робоча програма WORK3.EXE, що потребує установки на жорсткому диску

;Основні фрагменти програми

;Відкриваємо файл із робочою програмою

jnc gol

jmp notopen

gol:

mov handle,AX ;Запам'ятаємо дескриптор

;Зупинимо вказівник на 2 байта за ;кінцем файла

mov АН,42h ;Функція установки пвказівника

mov AL,2 ;Режим - від кінця файла

mov BX,handle

mov CX,0

mov DX,2

Int 21h

;Виконаємо фіктивний запис 0 байтів, щоб збільшити файл на два байти

mov AH,40h

mov BX,handle

mov CX,0

mov DX,offset key_rd ;Фіктивний параметр

int 21h

;Зсунемо вказівник на старий кінець файла, тобто на ключ

mov АН,42h

mov AL,2

mov BX,handle

mov CX,-1

mov DX,-2

int 21h

;Прочитаємо ключ

mov AH,3Fh

mov BX,handle

mov CX,2

mov DX,of set key_rd

int 21h

;Порівняємо прочитаний ключ із записаним у програмі

mov AX,key

сmр AX,key_rd

je ok ;Ключі збігаються

;Ключі не збігаються, виведемо повідомлення mes1 про те,

;що програма не встановлена

jmp ahead ;Продовжимо програму

ok:

;Виведемо повідомлення ims про нормальну роботу

;Зрушимо вказівник на старий кінець файла

ahead:

mov AH,42h

mov AL,2

mov BX,handle

mov CX,-l

mov DX,-Z

Int 21h

;Виконаємо фіктивний запис 0 байтів, щоб зафіксувати поточну довжину файла

mov AH,0h

mov BX,handle

mov CX,0

mov DX,offset key_rd ;Фіктивний параметр

Int 21h

;Виведемо повідомлення mes2 про відмову відкрити Файл

notopen:

jmp outprog

myproc endp

;Поля даних

fname db 'work3.exe',0 ;Ім'я файла

handle dw 0 ;Комірка для дескриптора

key dw 1234h ;Ключ, що записується у файл

key_rd dw 0 ;Ключ, що читається з файла

mes db 'Программа встановлена і буде працювати нормально',10,13

mes1 db 'Программа не встановлена і не може бути запущена',10,13

mes2 db 'Файл WORK3. EXE не відкрився'. 10.13

mes3 db 'Файл WORK3. EXE не знайдений у таблиці файлів'

Програма INSTALL3. EXE

;Установча програма, призначена для установки

;на жорсткому диску робочої програми WORK3.EXE ;Основні фрагменти програми

;Відчинимо файл із робочою програмою, щоб він потрапив у таблицю файлів

jnc go1

jmp notopen

go1:

mov handle,AX ;

;Одержимо індекс SFT із JFT, що знаходиться в PSP

mov DI,l8h ;ES:DI->JFT

add DI,AX ;ЕS:DI->наш елемент у JFT

mov CL,ES:[DI] ;CL=індекс SFT

xor CH.CH ;CH=індекс SFT

;Одержимо доступ до системної таблиці файлів

mov AH,52h

Int 21h

les DI,ES:[BX+4] ;ES:DI->перша SFT сmр CX,ES:[OI+4] ;Індекс у цій SFT?

jb here ;І

sub CX,ES:[DI+4] ;Немає, віднімемо число блоків у цій ;SFT

les DI,ES:[OI] ;ES:DI->друга SFT

here:

;Знайшли ту SFT, у котрій наш індекс

mov AX,59 ;Розмір блока опису файла

mul CL

add DI,6 ;ЕS:DI->перший блок опису файла

add DI,AX ;ЕS:DI->блок опису файла

mov AX,ES:[DI+llh] ;АХ=молодше слово довжини

mov DX,ES:[DI+13h] ;DХ=старше слово довжини

les DI,ES:[DI+7] ;ЕS:DI=вказівник на DPB

mov BL,ES:[DI+4] ;ВL=номер старшого сектора кластера

inc BL ;BL=число секторів у кластері

xor BH,BH ;ВХ-число секторів у кластері

mov CL,9 ;Зсув на 9 бітій = множення на 512

shl BX,CL ;вх=число байтів у кластері

mov SI,BX ;Збережемо розмір кластера в SI

d1v BX ;DX:AX/BX.

push DX ;Збережемо у стекі залишок

;Встановимо вказівник на кінець файла

mov AH,42h

mov AL,2 ;Режим установки від кінця файла

mov BX,handle

mov CX,O ;0 байтів

mov DX,O ;від кінця файла

1nt 21h

;чи потрібна корекція довжини файла? Файл треба подовжити,

;якщо залишок дорівнює 0 або дорівнює довжині кластера-1.

pop DX ; Витягнемо зі стека залишок

dec SI ;SI-число байтів у кластері-1

cmp DX,0 ;Залишок дорівнює 0?

je incr ;Так, на корекцію

cmp DX.SI ;Залишок дорівнює довжині кластера-1?

je incr ;Так, на корекцію

jmp good ;корекція не потрібна

;Збільшемо файл на два байти, щоб він зайняв ще один кластер

incr:

mov AH,40h

mov BX,handle

mov CX.2

mov OX, offset null

Int 21h

jmp good ;Ha запис ключа за межами нової довжини файла

good:

;Запишемо за межами файла ключ

mov АН,40h

mov ВХ,handle

mov СХ,2

mov OX,offset key

Int 21h ;Зрушимо покажчик на старий кінець файла, щоб відділити ключ від файла

mov AH,42h

mov AL,2 ;Режим установки від кінця файла

mov ВХ,handle

mov СХ,-1 ;СХ:DХ=машинне уявлення

mov DX,-2 ;числа -2

int 21h

; Виконаємо фіктивний запис 0 байтів, щоб укоротить файл

;до старої довжини

mov AH,40h

mov ВХ,handle

mov СХ.0

mov DX,offset key ;Фіктивний параметр

Int 21h ;Виведемо повідомлення mes про нормальну роботу

;Завершимо програму

notopen:

;Виведемо повідомлення mes2 про неможливість відкрити файл

jmp outprog ;Поля даних

fname db 'work3.exe',0 ;Ім'я файла handle dw 0 ;Осередок для дескриптора

key dw 1234h ;Ключ, що записується у файл

null dw 0

mes db 'Программа WORK3.EXE установлена на жорсткому дискі',10,13

mes2 db 'Файл WORK3.EXE не відкрився',10,13

Блок-схема алгоритму

Блок-схема робочої програми WORK3.EXE.

Блок-схема установочної програми INSTALL3.EXE.

Страницы: 1, 2



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.