Купить
 
 
Жанр: Учеба

Как защитить информацию (пособие по борьбе с хакерами)

страница №6

¦
¦ frwd: ¦
¦ push cs ¦
¦ pop ds ¦
¦ mov cx,12 ¦
¦ mov di,offset start ¦
¦ call del ¦
¦ mov dx,offset msg ¦
¦ mov ah,9 ¦
¦ int 21h ¦
¦ mov ax,4c00h ¦
¦ int 21h ¦
¦ msg db 'Hellow, boys!',0ah,0dh,'$' ¦
¦ exam endp ¦
¦ cseg ends ¦
¦ end start ¦
L-------------------------------------------------------------

рис. 8.1

ГОЛОВОЛОМКА 2
-------------------------------------------------------------¬
¦ TEXT: segment byte public 'CODE' ¦
¦ assume cs:TEXT ¦
¦ org 100h ¦
¦ ¦
¦ start: mov dx,offset prv ¦
¦ mov ah,9 ¦
¦ int 21h ¦
¦ db 2eh ¦
¦ pushf ¦
¦ pop ax ¦
¦ sahf ¦
¦ mov ah,9 ¦
¦ jb Glk ¦
¦ mov dx,offset mes1 ¦
¦ int 21h ¦
¦ mov ax,4c00h ¦
¦ int 21h ¦
¦ Glk: ¦
¦ mov dx,offset mes2 ¦
¦ int 21h ¦
¦ mov ax,4c01h ¦
¦ int 21h ¦
¦ ¦
¦ prv label byte ¦
¦ db 'dbtest',0ah,0dh,024h ¦
¦ ¦
¦ mes1 label byte ¦
¦ db 'Ok',0ah,0dh,24h ¦
¦ ¦
¦ mes2 label byte ¦
¦ db 'Trace',0ah,0dh,24h ¦
¦ ¦
¦ TEXT ends ¦
¦ end start ¦
L-------------------------------------------------------------

рис. 8.2

9. АНОНС ВМЕСТО ЗАКЛЮЧЕНИЯ

Второй номер компьютерного приложения к журналу
"Техника-молодежи" продолжит тему защиты информации. В нем будут даны
ответы на некоторые вопросы по вирусологии, возникающие у неискушенных
пользователей, состоится знакомство с программами-отладчиками и
детально описаны способы защиты исполняемых модулей от исследования:
- вирусы и их функции;
- отладчики: состояние, перспективы; как "доработать" имеющийся
отладчик;
- библиотека подпрограмм для защиты исполняемого кода от
исследования;
- распределенные программные модули; генерация исполняемого
кода;
- программный замок с псевдослучайным ключом;
- DLOCK ver 3.0;
- рекомендации по защите программ для ПЭВМ типа "Enterprisse" и
"Spectrum" ("Синклер");
- квалификационная тест-программа.

Дискета, как всегда, содержит исполняемые модули и исходные тексты
программ на Ассемблере, Си, Бейсике.

Подписаться на оптовую поставку компьютерного приложения можно в
редакции журнала "Техника-молодежи" (125015, Москва, Новодмитровская
ул., д. 5а, тел. 285-16-87, 285-89-80), приобрести единичные
экземпляры - там же или у наших диллеров (у которых Вы купили первый
выпуск).

Приложение 1

СЛОВАРЬ ТЕРМИНОВ

Аномалии МП - специфические особенности выполнения некоторых команд
микропроцессора.

Байт - единица информации, в системе MS DOS байт может принимать
значения кодов от 0 до 255, 2 байта составляют машинное
слово (значение от 0 до 65536).

Блок (подпрограмма, процедура) - часть программы (хранящаяся на диске
внутри .EXE файла), имеющая собственный набор команд и
данных, и предназначенная для выполнения некоторых
действий с последующей передачей управления тому блоку
основной программы программы, который ее вызвал.

Дизассемблер - программа, позволяющая получить текст других программ
на языке ассемблер.

Дисперсия - мера рассеяния значений случайной величины около ее
математического ожидания.

Драйвер - (англ. "водитель") резидентная программа, постоянно
находящаяся в оперативной памяти и активизирующаяся от
соответствующего прерывания, обработка которого за ней
закреплена. В отличие от других резидентных программ,
драйвер, как правило, создается для сопровождения одного
устройства или поддержки одной программы, формируя
необходимую для их нормальной работы среду в оперативной
памяти.

Заголовок
EXE-файла - начальная часть файла, в которой, в частности, содержится
информация о стартовом значении регистров МП, размере
всего файла, таблица перемещения и т.д.

Защитный
механизм - часть исполняемого модуля, реализующая защитные функций:
идентификацию пользователя, компьютера, магнитного
носителя, защиту программы от исследования и т.п.

Идентификация - сопоставление предъявленных характеристик с
эталонными.

Исполняемый
модуль - программа или ее законченная часть (хранящаяся на диске
отдельно), имеющая набор команд и данных, имя и
предназначенная для загрузки в оперативную память ПЭВМ с
последующуй передачей ему управления.

Исходный
текст (исходник) - текст программы на одном из языков программирования
и введенный в ПЭВМ непосредственно программистом (до
какой-либо обработки его компьютером).

Кластер - минимальная единица дисковой памяти, выделяемая DOS-ом для
хранения файла.

Ключевая
фраза - (она же - парольная) последовательность символов, вводимая
пользователем с клавиатуры для его идентификации.

Конвейер шины
данных - аппаратно реализованная память ПЭВМ (обычно 4 - 6 байт),
предназначенная для хранения очереди процессорных команд,
ожидающих выполнения.


Контроллер - аппаратное устройство, реализующее обмен информации между
ПЭВМ и периферийным оборудованием.

Контрольная
точка - команда, после или до выполнения которой может быть
зафиксировано состояние вычислительного процесса.

Листинг - текст программы написанный на одном из языков
программирования, в котором, как правило, указана
информация по выделенным для программы ресурсам компьютера
(распределение памяти и др.) и приведены коды команд. В
отличие от исходных текстов, которые вводит программист,
листинг конечный продукт специальных программ
(трансляторов, компиляторов, дизассемблеров и т.д.).

Математическое
ожидание - характеристика случайной величины, ее определение связано с
понятием о среднем значении множества (область центра
математического множества).

МП - микропроцессор.

НСК - несанкционированное копирование.

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

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

ПО - программное обеспечение.

Пошаговый
режим - процесс выполнения программы по одной команде. После
выполнения каждого шага управление возвращается программе,
осуществляющей пошаговый режим (для возможности просмотра
состояния ОЗУ и содержимого регистров МП).

Прерывание - программно или аппаратно инициированная передача
управления по адресу, который находится в таблице векторов
прерываний:
- аппаратное - инициируется контроллерами периферийного оборудования;
- программное - инициируется программой;
- трассировочное - аппаратное прерывание по вектору 1, выполняемое
после каждой команды процессора, если флаг трассировки TF
слова состояния процессора установлен;
- 21h - программное прерывание по вектору 21h, реализующее все
основные функции DOS (файловые операции, управление
памятью, справочная информация и т.д.);
- 13h - программное прерывание по вектору 13h, реализующее все
основные операции по работе с диском;
- функции - выполняемые тем или иным прерыванием в зависимости от
значений входных аргументов.

Пристыкованный
блок - блок программы (модуль), который работает только один раз, как
правило, сразу после запуска программы, и после передачи
управления основной задаче (к которой он пристыкован) в
дальнейшем вычислительном процессе не участвует.

Псевдослучайная
последовательность - последовательность чисел, подчиняющаяся
заданному закону распределения.

Резидентная
программа - программа, постоянно находящаяся в оперативной памяти и
активизирующаяся от соответствующего прерывания, обработка
которого за ней закреплена.

Самомодифицирующийся
модуль - исполняемый блок программы, изменяющий собственные команды в
процессе выполнения.

Сегмент - страница оперативной памяти (блок ОЗУ), отведенная либо для
кодов программы (кодовый сегмент), либо под стек
(стековый), либо под данные (сегмент данных).


Сегментные:
регистры - аппаратные регистры микропроцессора, предназначенные для
хранения адресов соответствующих сегментов: CS - кодового,
DS - данных, SS - стека;
пересылки - пересылки данных из сегмента в сегмент, в которых
участвуют сегментные регистры.

Стек - часть оперативной памяти, выделяемая программе для хранения
промежуточных результатов вычислений и данных.

Таблица
перемещения - часть заголовка EXE-файла, содержащая адреса команд и
данных в его теле, относительно начала файла на диске.
После выделения DOS-ом свободных сегментов для загрузки в
ОЗУ, операционная система, пользуясь таблицей перемещений,
пересчитает относительные адреса на абсолютные (те, на
которых программа реально будет располагаться в
оперативной памяти).

Точка останова - адрес команды, перед выполнением которой управление
передается отладчику.

Трассировка - процесс пошагового выполнения программы под отладчиком.

Утилита - программа, дополняющая операционную систему,
выполняющая одну из функций обслуживания
компьютера или его периферии.

Элемент
оглавления - структура, описывающая дисковый файл.

Эмулятор - устройство (программа), позволяющее анализировать
результаты выполнения каждой команды исследуемой программы
без реальной передачи ей управления.

BIOS - Base Input Output System (базовая система ввода/вывода).

CMOS - энергонезависимая память ПЭВМ, имеет встроенные часы реального
времени с календарем, содержит информацию о конфигурации
машины.

COM-файл - исполняемый модуль, содержащий только бинарный образ задачи
без какой-либо управляющей информации; этот тип программ
всегда загружается в ОЗУ по одним и тем же адресам
(указанным при написании программы), величина COM-файла не
может превышать размер одного сегмента (64 КБ).

EXE-файл - программный файл (коды модуля, программы), хранящийся на
диске, имеющий заголовок и таблицу перемещения. После
загрузки модуля в оперативную память, DOS вводит в
регистры МП начальные значения (из заголовка) и
настраивает программу на выделенные сегменты памяти.

FAT - системная таблица диска, указывающая физическое раположение
файлов и свободную область на диске.

SP (указатель
вершины стека) - аппаратный регистр МП, содержащий смещение текущего
адреса стека относительно начала стекового сегмента (адрес
в регистре SS).

ДОРОГИЕ ДРУЗЬЯ !

Предлагаем вашему вниманию набор информационных материалов:

2BART1 - КАК СОЗДАТЬ TSR БЕЗ PSP;
2BART2 - НЕСКОЛЬКО СЛОВ О ВИДЕОАДАПТЕРАХ;
2BCOPY1 - КАК СКОПИРОВАТЬ ЗАЩИЩЕННУЮ ОТ КОПИРОВАНИЯ ДИСКЕТУ;

Материалы подготовлены в формате для непосредственной печати
на любом устройстве.

Статьи 2BART1, 2BART2 предназначены для программистов.
Статья 2BCOPY1 возможно будет интересна как для программистов,
так и для пользователей ПЭВМ.


НЕСКОЛЬКО СЛОВ ОБ АВТОРАХ.

Материалы подготовлены группой авторов, которые назвали себя
2B PROGRAMMERS GROUP. Мы все в прошлом работали на
госпредприятии, а теперь в совместном предприятии "ДИАЛОГ" в
отделе экспертизы и сертификации программного обеспечения. В
состав группы входят высококвалифицированные системные
программисты, занимавшиеся разработкой и доработкой
операционных систем для ЕС ЭВМ. В настоящее время мы
специализируемся в области систем компьютерной безопасности,
систем защиты от копирования и разработки программного
обеспечения для различного оборудования ПЭВМ.

КАК НАЙТИ АВТОРОВ

Телефон: 095-329-4611
Телефакс: 095-329-4711
E-mail: Vlad_Seregin, 2:5020/6 @FidoNet (JVD1BBS, 095-329-2192)

Адрес: г. Москва, ул. Ягодная, 17
Отдел Экспертизы и Сертификации.

1


ГРУППА ПРОГРАММИСТОВ 2B.

СПОСОБ СОЗДАНИЯ TSR ПРОГРАММ БЕЗ PSP.

В данной статье рассматривается способ построения
резидентных программ - TSR (Terminate and Stay Resident),
позволяющий использовать область PSP (Program Segment
Prefix) для размещения резидентного кода программы.

НЕСКОЛЬКО СЛОВ О TSR.

При разработке TSR - программ стандартными средствами
DOS в памяти после завершения программы остается PSP
размером 256 байт или по крайней мере его часть, если
программа использует область FCB (File Control Block) и
параметров для собственных нужд. Мы расскажем Вам о способе,
позволяющем полностью использовать область PSP в интересах
резидентной программы и приведем пример такой программы.
Данный способ был разработан авторами в начале 1989 года,
когда потребовалось загрузить много крохотных TSR -
программ, размер которых не превышал PSP.

КОЕ ЧТО О НЕДОКУМЕНТИРОВАННЫХ ФУНКЦИЯХ DOS.

Для понимания механизма разработки TSR без PSP
необходимо ознакомиться с некоторыми недокументированными
функциями DOS и с форматами PSP и MCB - Memory Control
Block.

PSP - PROGRAM SEGMENT PREFIX.

PSP всегда строится DOS при запуске любой программы и
непосредственно предшествует началу программы. Рассмотрим
формат PSP.

СМЕЩЕНИЕ РАЗМЕР ОПИСАНИЕ

00h 2 БАЙТА содержит команду INT 20h, которая
используется для завершения программы
02h СЛОВО сегментный адрес свободной памяти,
следующей, за памятью, выделенной
программе. Это может быть либо адрес за
памятью DOS (например, A000h), либо
адрес следующего доступного MCB.
04h БАЙТ резерв.
05h 5 БАЙТ длинный вызов диспетчера функций DOS.
Содержит команду длинного перехода к
диспетчеру функций DOS. Используется в
программах, ориентированных на CP/M.
Смещение в команде длинного перехода
содержит количество байтов, доступных в
сегменте кода программы.


2


0Ah ДВ.СЛОВО копия вектора прерывания 22h, по
которому управление передается для
завершения программы.
0Eh ДВ.СЛОВО копия вектора прерывания 23h, по
которому управление передается при
нажатии CONTROL-BREAK или CONTROL-C.
12h ДВ.СЛОВО копия вектора прерывания 24h, по
которому управление передается при
обнаружении критической ошибки.
16h СЛОВО сегментный адрес PSP родительского
процесса (адрес текущего PSP для
процесса, у которого нет родителя).
18h 20 БАЙТ FILE HANDLE TABLE. Содержит 20
однобайтовых индексов для системной
таблицы файлов. Первые пять входов
предназначены для STDIN, STDOUT,STDERR,
AUXIO и LSTOUT.
2Ch СЛОВО сегментный адрес блока среды для
процесса.
2Eh ДВ.СЛОВО область сохранения указателя стека
процесса, когда процесс использует стек
DOS (т.е. содержимое SS:SP перед
последним подключением функции DOS с
помощью INT 21h).
32h СЛОВО максимальное количество входов в FILE
HANDLE TABLE (по умолчанию 20).
34h ДВ.СЛОВО адрес FILE HANDLE TABLE (стандартно
указывает на таблицу в текущем PSP).
38h 24 БАЙТА резерв.
50h 3 БАЙТА команда INT 21h, за которой следует
команда far RET. Используется для
вызова диспетчера функций DOS.
53h 2 БАЙТА резерв.
55h 7 БАЙТ расширение первого FCB.
5Ch 16 БАЙТ начальные байты первого неоткрытого
FCB. Открытие данного FCB приведет к
разрушению второго FCB и байта с длиной
командной строки.
6Ch 16 БАЙТ начальные байты второго неоткрытого
FCB. Открытие данного FCB приведет к
разрушению командной строки.
7ch ДВ.СЛОВО резерв.
80h 128 БАЙТ область DTA (Data Transfer Area) по
умолчанию. Перекрывает байт с длиной
командной строки и буфер командной
строки (127 байтов).

Размер блока - 256 байт.

3


MCB - MEMORY CONTROL BLOCK.

MCB является блоком DOS описывающим каждый
распределенный участок памяти. Как правило MCB всегда
строится перед PSP исполняемой программы. Рассмотрим формат
MCB.

СМЕЩЕНИЕ РАЗМЕР ОПИСАНИЕ

00h БАЙТ тип блока:
'M' (4Dh) - промежуточный блок;
'Z' (5Ah) - последний блок.
01h СЛОВО сегмент владельца блока, 0 - свободный
блок.
03h СЛОВО количество параграфов в блоке.
05h 11 БАЙТ резерв.

Размер блока - 16 байт.

НЕДОКУМЕНТИРОВАННЫЕ ФУНКЦИИ DOS.

Рассмотрим теперь недокументированные функции DOS,
которые используются для построения TSR без PSP.


УСТАНОВИТЬ ТЕКУЩИЙ PSP.

Данная функция указывает DOS, что в качестве текущего
следует использовать указанный PSP.

ВХОДНЫЕ ПАРАМЕТРЫ:

AH = 50h
BX = сегментный адрес нового PSP.

СОЗДАТЬ ПОДЧИНЕННЫЙ PSP.

Данная функция требует от DOS создать подчиненный PSP.
В отличии от функции 26h данные не копируются из текущего
PSP, а строятся заново.

ВХОДНЫЕ ПАРАМЕТРЫ:

AH = 55h
BX = сегментный адрес для построения нового PSP.
SI = значение, которое требуется установить в поле со
смещением 2 в новом PSP.

4


ПРОЦЕСС ЗАВЕРШЕНИЯ РЕЗИДЕНТНОЙ ПРОГРАММЫ.

Сущность завершения резидентной программы без PSP
состоит в создании нового PSP и указании DOS использовать
этот PSP в качестве активного. При этом сам текст
резидентной части перемещается на начало старого PSP.

Рассмотрим последовательность действий при завершении
программы.

1. Освободить ENVIRONMENT, адрес которого находится в
PSP по смещению 2Ch. Вообще говоря, это действие не связано
с собственно процессом завершения резидентной программы без
PSP и рекомендуется для любого способа завершения
резидентных программ.
2. Изменить размер памяти, используемый программой,
указав в качестве нового размера длину резидентной части
программы в параграфах, а в качестве адреса модифицируемой
памяти - сегментный адрес PSP. Для выполнения используется
функция DOS 4Ah. Если резидентная часть начинается с начала
программы, то ее следует сначала сохранить, т.к. при
освобождении памяти в теле программы будет построен новый
MCB. Также целесообразно зарезервировать после резидентной
части участок длиной 16 байт для MCB, чтобы последующие
действия не уничтожили дальнейший код программы.
3. Вычисляется сегментный адрес для построения нового
PSP по формуле "длина резидентной части в
параграфах"+"сегментный адрес старого PSP"+1 (размер MCB в
параграфах).
4. Строится новый PSP по вычисленному сегментному
адресу с использованием функции 55h. В качестве значения SI
берется поле со смещением 2 в старом PSP.
5. Корректируется адрес родительского PSP в новом PSP
по смещению 16h. Значение выбирается из поля с таким же
смещением из старого PSP.
6. Новый PSP указывается DOS в качестве текущего с
использованием функции 50h.
7. Корректируется указатель на собственника памяти в
новом MCB по смещению 01h. MCB расположен по сегментному
адресу равному сегменту нового PSP минус 1. Значение
указателя устанавливается равным сегментному адресу нового
PSP.
8. Резидентная часть программы пересылается по адресу
сегмента старого PSP со смещением 0.
9. Выполняются необходимые действия для настройки
резидентной части. Их можно также выполнить заранее.
10. Программа завершается обычным образом по функции
DOS 04Ch.

Посмотри в окно!

Чтобы сохранить великий дар природы — зрение, врачи рекомендуют читать непрерывно не более 45–50 минут, а потом делать перерыв для ослабления мышц глаза. В перерывах между чтением полезны гимнастические упражнения: переключение зрения с ближней точки на более дальнюю.

5


Схематически этот метод изображен на 3-х рисунках.

Рисунок 1 показывает изменение в расположении блоков в
памяти при выполнении функции DOS 4Ah.

---T---------------¬ ---T---------------¬
¦ ¦ ¦ ¦ ¦ ¦
¦ ¦ MCB ¦ -" На PSP "¬ ¦ ¦ MCB ¦
¦ ¦ ¦ ¦ родителя ¦ ¦ ¦ ¦
¦ +---------------+ ¦ ¦ ¦ +---------------+
L-"¦ текущий +--- ¦ L-"¦ текущий ¦
¦ PSP ¦ L----+ PSP ¦
+---------------+ +---------------¦
¦ ¦ Выполнение ¦ ПРОГРАММА ¦
¦ ¦ функции +---------------+
¦ ¦ DOS ¦ новый ¦
¦ ¦ 4Ah ¦ MCB ¦
¦ ¦ ¦ свободный ¦
¦ ПРОГРАММА ¦ +---------------+
¦ ¦ ¦ ¦
¦ ¦ ¦ ПРОГРАММА ¦
L---------------- L----------------

Рис. 1.

Рисунок 2 показывает изменение в расположении блоков в
памяти после выполнения функции DOS 55h и при коррекции
указателей.

Выполнение функции DOS 55h.

---T---------------¬ ---T---------------¬
¦ ¦ ¦ -" На PSP ¦ ¦ ¦
¦ ¦ MCB ¦ ¦ родителя ¦ ¦ MCB ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦
¦ +---------------+ ¦ ¦ +---------------+
L-"¦ текущий +-- L-"¦ текущий ¦
¦ PSP ¦"--¬ ¦ PSP ¦
¦ ¦ ¦ ¦ ¦
+---------------¦ ¦ +---------------¦
¦ ПРОГРАММА ¦ ¦ ¦ ПРОГРАММА ¦
+---------------+ ¦ ---+---------------+
¦ новый ¦ ¦ Коррекция ¦ ¦ новый ¦
¦ MCB ¦ ¦ указателей ¦ ¦ MCB ¦
¦ свободный ¦ ¦ ¦ ¦ распределен ¦
+---------------+ ¦ ¦ +---------------+
¦ новый +---- L-"¦ новый ¦
¦ PSP ¦ На PSP "----+ PSP ¦
+---------------+ родителя +---------------+
¦ ПРОГРАММА ¦ ¦ ПРОГРАММА ¦
L---------------- L----------------

Рис. 2.

6


Рисунок 3 показывает изменение в расположении блоков в
памяти после выполнения функции DOS 50h.

Выполнение функции DOS 50h.

---T---------------¬
¦ ¦ ¦
¦ ¦ MCB ¦
¦ ¦ ¦
¦ +---------------+----¬
L-"¦ старый ¦ ¦
¦ PSP ¦ +----" Вся эта область доступна TSR.
+---------------+ ¦
¦ ПРОГРАММА ¦ ¦
---+---------------+-----
¦ ¦ новый ¦
¦ ¦ MCB ¦
¦ ¦ распределен ¦
¦ +---------------+
L-"¦ текущий +--------" На PSP родителя.

¦ PSP ¦
+---------------+
¦ ПРОГРАММА ¦
L----------------

Рис. 3.

СОВМЕСТИМОСТЬ.

Данный метод опробован в различных совместимых
операционных средах:

- MS/PC DOS 3.30;
- MS/PC DOS 4;
- MS DOS 5 beta release;
- DR DOS 3.41;
- DR DOS 5;
- с использованием загрузчика LOADHI от системы QEMM
5.0;
- с использованием загрузки в старшую память HILOAD DR
DOS 5.

7


ПРИМЕР РЕЗИДЕНТНОЙ ПРОГРАММЫ БЕЗ PSP.

Для лучшего понимания порядка завершения резидентной
программы без PSP приведем пример.

page

Список страниц

Закладка в соц.сетях

Купить

☏ Заказ рекламы: +3805044-68-872

© Ассоциация электронных библиотек Украины

☝ Все материалы сайта (включая статьи, изображения, рекламные объявления и пр.) предназначены только для предварительного ознакомления. Все права на публикации, представленные на сайте принадлежат их законным владельцам. Просим Вас не сохранять копии информации.