49654 (Захист від несанкціонованого доступу), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Захист від несанкціонованого доступу", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49654"

Текст 2 страницы из документа "49654"

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

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

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

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

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

  3. компонування об'єктного модуля за допомогою компоновника 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 і подовживши його на два байта (тобто фактично на цілий кластер), якщо за межами файла, але до кінця останнього зайнятого файлом кластера, не має місця для запису ключа.

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

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

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

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

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

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

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

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

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

Програма 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

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

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


Ні

Так


Так

Ні


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


Так

Ні


Ні


Так



Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Нет! Мы не выполняем работы на заказ, однако Вы можете попросить что-то выложить в наших социальных сетях.
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
4098
Авторов
на СтудИзбе
667
Средний доход
с одного платного файла
Обучение Подробнее