Використання інтерактивного відлагоджувальника 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.

 

 

 


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

 

     
 

 

 


Дата добавления: 2019-07-15; просмотров: 117; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!