Учебная работа. Реферат: Система защиты от несанкционированного копирования

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Реферат: Система защиты от несанкционированного копирования

СОДЕРЖАНИЕ

1. Введение 4

2. Исследовательский раздел 8

2.1.структура системы защиты от несанкционированного копирования. 8

2.2.Подсистема внедрения управляющих устройств. 10

2.3.Блок установки черт среды. 12

2.4.Выбор структуры системы для реализации. 14

3. Опытно-конструкторский раздел 15

3.1.Выбор и обоснование языка программирования. 15

3.2.структура программки. 17

3.2.1.Модуль Frozen. 19

3.2.2.Модуль Install. 20

3.2.3.Модуль Ind. 20

3.2.4.Пуск наружной программки. 26

3.2.5.Работа с НГМД. 27

4. Выводы 28

5. Литература 29

6. приложение 31

6.1.Требования к аппаратуре. 31

6.2.Требования к программному обеспечению. 31

6.3.Фрагменты программ. 31

Введение

Навряд ли в нашей стране найдётся хотя бы десяток программистов либо людей, ежедневно использующих ПК в собственной проф деятель, которые с гордостью могут повытрепываться тем, что никогда в жизни не употребляли незаконно приобретённые программные продукты. сейчас сложилась феноминальная ситуация, когда в большинстве российских ПК в главном употребляется «ворованное» программное обеспечение. Редчайшее исключение составляют те немногие мастера, которые работают в личных фирмах либо на совместных предприятиях: как правило, тут весьма дорожат репутацией конторы и потому стараются применять лишь лицензионные (официально приобретенные) программки.

В согласовании с интернациональным правом труд создателя программки приравнен к труду остальных творцов умственной принадлежности, таковых как писатели, музыканты, живописцы, и подлежит защите. Но в отличие от книжки либо картины общее копирование программки не вызывает каких-то технических проблем и не просит специального доп оборудования, если очевидно, не считать комп. Тут программка намного беззащитнее, чем, скажем, статуя либо книжка. Общий вред от незаконного копирования программ по оценкам западных профессионалов составляет от 2 до 10 миллиардов. баксов в год. Навряд ли в ближнем будущем что-либо абсолютно поменяется тут, в особенности в нашей стране.

Бурное развитие информационных технологий и внедрение их в самых разных, в том числе и критичных, областях людской деятель привело к тому, что кроме задач передачи, хранения и обработки инфы появилась не наименее, а в ряде всевозможных случаев и наиболее принципиальная задачка защиты инфы. В согласовании с принятой систематизацией выделяют 6 направлений деятель по защите инфы [7]:

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

защита инфы при передаче по каналам связи и в средствах их коммутации (в том числе в локальных (ЛВС) и распределённых вычислительных сетях).

защита юридической значимости так именуемых «электрических» документов (в системе электрической почты (e-mail) и др.)

защита от утечки инфы в виде побочных электромагнитных излучений и наводок (ПЭМИН).

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

защита от несанкционированного копирования и распространения программ и баз данных.

В истинное время в связи со сложным нравом отношений на рынке программных товаров неувязка защиты от несанкционированного копирования является одной из более острых в области разработки программных средств. Она обоснована «самой сущностью людской психологии и будет существовать до того времени, пока программный продукт является продуктом». Данное утверждение подчёркивает экономический базис рассматриваемой трудности – несанкционированное копирование осуществляется тогда, когда у юзера существует Потребность в эксплуатации какого-то программного продукта, а Издержки на копирование значительно меньше издержек на приобретение законной копии.

Высочайший уровень незаконного копирования (по данным интернациональной организации Business Software Alliance в Рф незаконно употребляется до 98% программных товаров) обоснован сначала соотношением средней оплаты труда и цены набора программного обеспечения, которая колеблется от 200$ для компов домашнего использования до нескольких тыщ баксов для проф систем. Если гласить наиболее строго, то кроме экономических есть и остальные предпосылки для несанкционированного копирования, а именно ознакомительные и психические, но превалирует всё-таки экономический мотив.

Для разраба программного обеспечения, как и для хоть какого другого производителя основная задачка заключается в том, чтоб окупить Издержки на Создание и получить прибыль. При всем этом вероятны два последних варианта: или производитель находит заказчика, который оплачивает разработку, или все Издержки покрываются за счёт продаж. Для разрабов предпочтителен 1-ый вариант, потому что в нём риск сводится к минимуму, но он вероятен лишь при отсутствии на рынке аналогов программного продукта. Требования к программке должны быть так специфичны, а Потребность в продукте так велика, что заказчику не оставалось бы ничего другого, не считая как произвести оплату разработку. Беря во внимание нынешнюю ситуацию в области разработки программ, этот вариант можно разглядывать как вырожденный. Обычной является ситуация, когда производитель разрабатывает продукт за счёт собственных средств с целью реализовать определённое число копий и не заинтересован в бесплатном тиражировании.

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

К истинному времени разработаны довольно действенные способы противодействия несанкционированному копированию, но стоит выделить, что не существует таковой защиты, которую было бы нереально (кроме воли создателя) снять. Не обязано вызывать колебаний то, что опытнейший программер, владеющий надлежащими способностями, постоянно сумеет отыскать то пространство (те места) в защищённой программке, где принимается решение о легальности копии, и, изменив несколько б (либо даже один единственный б) в коде программки, лишить её способности к самозащите. Конкретно по данной причине ведущие фирмы-производители массового программного обеспечения фактически никогда не ставят защиту на свои программки, справедливо полагая, что не стоит растрачивать силы и средства на создание системы защиты (тем наиболее, что эти системы, обычно, причиняют юзеру определённые неудобства), если всё равно программка будет вскрыта. Эти конторы получают свои «дивиденды» за счёт массовости объёма продаж при сравнимо низкой стоимости за каждую копию. Они делают ставку на «цивилизованных» покупателей и, что броско, таковым методом воспитывают их! Наиболее того, в крайнее время получили распространение программки, которые как раз рассчитаны на механизм «пиратского» копирования и распространяются в большей степени конкретно таковым методом: обычно эти программки сопровождаются «электрическим письмом» (файлом с текстом), в каком содержится короткая инструкция по работе с программкой и указываются нужные координаты создателя с просьбой выслать маленькую сумму в случае, если юзер считает, что плюсы программки заслуживают этого.

несколько по другому обстоит дело с программками, которые не рассчитаны на массового юзера. К таковым относятся различного рода системы автоматического проектирования, предыздательские системы, спец базы данных и т.п. Как правило, это очень наукоёмкие продукты, т.е. в их в особенности велик вклад классных профессионалов в определенных прикладных областях. труд таковых профессионалов обычно высоко ценится, потому общие Издержки на создание подобного рода программ могут быть очень и очень значительны, что в сочетании со сравнимо маленьким кругом возможных юзеров делает стоимость каждой копии весьма большенный. Такие программки обычно снабжаются защитой, потому что ограниченный Спрос на их сформировывает очень специфичный (и почаще всего «цивилизованный») Рынок: покупателями этих программ являются спецы в определенной прикладной области, которые не имеют подходящих способностей и, основное, желания заниматься вскрытием программ.

Исследовательский раздел
структура системы защиты от несанкционированного копирования.

В общем случае система защиты от несанкционированного копирования представляет собой комплекс средств, созданный для затруднения (в эталоне – предотвращения) незаконного копирования (выполнения) защищаемого программного модуля, с которым она ассоциирована.

Обобщив сведения из разных источников можно предложить последующую структуру системы защиты от несанкционированного копирования (Рис. 2 .1). [7]

Рис. 2 .1. структура системы защиты от несанкционированного копирования

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

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

Подсистема противодействия нейтрализации защитных устройств создана для борьбы с вероятными попытками нейтрализации системы защиты от несанкционированного копирования и/либо её дискредитации.

Блок установки черт среды отвечает за получение черт, идентифицирующих вычислительную среду.

Блок сопоставления черт среды устанавливает факт легальности пуска защищаемой программки.

Блок ответной реакции реализует ответные деяния системы защиты на пробы несанкционированного выполнения защищаемой программки.

наличие системы защиты предполагает наличие злодея, который будет пробовать каким-то образом нейтрализовать защиту для решения задачки несанкционированного копирования. При всем этом нужно отчётливо осознавать, что не существует полностью стойкой защиты, а есть защиты, время преодоления которых по затратам труда и машинного времени сравнимы с разработкой системы, аналогичной защищённой. Данное положение приводит к феноминальному на 1-ый взор результату – возможность нейтрализации защиты у простых программных товаров со средним уровнем защищённости еще ниже, чем у сложных программ с высочайшим уровнем защиты.

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

Так как стойкость системы защиты определяется стойкостью всякого её элемента, то в качестве объекта атаки может употребляться неважно какая из обрисованных подсистем. тут нужно отметить неоднородный уровень как самих мыслях, лежащих в базе той либо другой подсистемы, так и их реализаций, что, сначала соединено с развитием приёмов, способов и средств для нейтрализации систем защиты. Беря во внимание современное состояние вопросца, более животрепещущей задачей, исходя из убеждений создателя, является разработка подсистемы внедрения управляющих устройств системы защиты и подсистемы установки черт среды, хотя другие подсистемы должны быть разработаны не наименее кропотливо. Показательным примером является блок ответной реакции, который может как просто выводить сообщение о беззаконности копии (что мгновенно выдаёт присутствие системы защиты), так и решать наиболее сложные деяния, дозволяющие на определённое время замаскировать наличие защиты, увеличивая тем время атаки.

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

Подсистема внедрения управляющих устройств.

системы защиты от несанкционированного копирования можно систематизировать по способу внедрения защитного механизма:

интегрированная (внедряется при разработке программного продукта);

пристыковочная (подключается к уже готовому программному продукту).

Самую большую популярность в крайнее время заполучили системы второго типа. Это обосновано преимуществ, которые даёт их внедрение:

простота тиражирования программных систем защиты на объекты заказчика и разраба;

простота технологии внедрения;

обеспечение достаточного уровня защищённости данных в силу специализации разрабов;

наиболее среднее соотношение «надёжность функционирования/Издержки на разработку» по сопоставлению со встроенными системами, приготовленными непрофессионалами.

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

Одним из вариантов встраивания пристыковываемого модуля в исполняемый модуль является дописывание его по вирусному принципу. [4] (естественно, из рассмотрения исключаются варианты, при которых программка перестаёт работать либо нарушается логика её работы.) При всем этом код защиты дописывается в некую область защищаемого файла и защищаемый файл модифицируется таковым образом, чтоб управление передавалось на пристыкованный модуль защиты, который инспектирует легальность копии, и в случае положительного ответа передаёт управление на исполняемый модуль. Таковой подход к внедрению в исполняемые файлы имеет ряд существенных недочетов. Во-1-х, начальный код защищаемой программки остаётся фактически в постоянном виде, что существенно упрощает нейтрализацию защиты. Во-2-х, если предполагается защищать файлы огромного размера и, как следствие, со сложной (быть может и с оверлейной) структурой, то нужно учесть то, что код, находящийся в конце загружен не будет, а означает программный модуль не будет отработан. Некие недочеты можно убрать, если писать в начало программки не одну команду перехода, в весь код защиты. При всем этом нужно видоизменять таблицу перемещения (которая находится в конце заголовка EXE-файла), в случае если защищается файл типа EXE.

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

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

Исходя из обозначенных недочетов, можно сконструировать последующие требования к пристыковываемым модулям:

пристыковываемый модуль должен подключаться к файлам хоть какого размера;

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

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

Блок установки черт среды.

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

В общем случае программное обеспечение может распространяться:

безвозмездно (из альтруизма и суждений саморекламы);

условно безвозмездно (по принципу «попробуй и купи» (try and buy), когда оплата делается добровольно и лишь тогда, когда юзер соглашается с настоящей полезностью для себя данного продукта);

на коммерческой базе.

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

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

с помощью специальной службы распространения;

через торговые организации;

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

При наличии специальной службы распространения контроль за дистрибутивными носителями заместо технических мер осуществляется организационными мерами. Сотрудники службы распространения выезжают с дистрибутивными комплектами к заказчикам, где создают установку программного обеспечения на жёсткий диск. Так как наличие у юзера запасных копий не предусматривается, то в случае сбоя требуется повторный выезд сотрудника службы распространения, что обычно рассматривается как определённое неудобство. При данном методе блок установки черт среды должен уметь идентифицировать лишь характеристики компа, по этому разработка блока несколько упрощается.

В случае распространения программных товаров через торговые организации вероятны последующие варианты:

программка сравнивает (связывает) себя с дистрибутивным носителем без «привязки» к определенному компу;

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

программка сравнивает себя как с дистрибутивным носителем (при установки), так и с параметрами компа (в рабочем режиме).

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

Вольный от этих недочетов 3-ий вариант просит кроме обеспечения надёжности главный дискеты решения далековато не обычный трудности счётчика установок.

Довольно увлекателен 3-ий метод распространения программного обеспечения – средством вольного распространения дистрибутивных (демо) пакетов. Сущность этого метода лучше всего обрисовать последующим сценарием. Юзер, всё равно каким методом, получает программку и запускает её на своём компе. При запуске ему сообщается некий код, который совместно с квитанцией о оплате он должен передать разрабу. В ответ ему сообщается иной код, являющийся паролем для регистрации копии программки и ассоциации её с компом. По такому способу, к примеру, защищён некогда пользующийся популярностью текстовый микропроцессор «Слово и Дело».

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

Выбор структуры системы для реализации.

В этом параграфе на базе анализа общей структуры системы защиты от несанкционированного копирования, проведённого в пп. 2.1 – 2.3, выбирается структура системы для реализации.

Для реализации выбрана пристыковочная система защиты от несанкционированного копирования. Этот выбор обусловили достоинства, даваемые её внедрением, которые перечислены в п. 2.2.

Беря во внимание требования к пристыковываемым модулям, сформулированные в п. 2.2, в программке реализована последующая схема пристыковки. Защищаемый файл шифруется и дописывается в пристыковываемый модуль как данные. Когда пристыкованному модулю нужно передать управление на защищённую программку, он расшифровывает её во временный файл и запускает с помощью функции DOS Exec. Опосля отработки временный файл удаляется.

Как сделалось ясно из п. 2.3, реализация блока установки черт среды зависит от метода распространения защищённого программного продукта. Создателем программки избран метод распространения через торговые организации. При всем этом при установки программка сравнивает себя с дистрибутивным носителем (главный дискетой), а в рабочем режиме с параметрами компа. Таковой метод не просит неизменного присутствия главный дискеты.

Опытно-конструкторский раздел
Выбор и обоснование языка программирования.

Языки программирования недозволено ассоциировать меж собой вне связи с решаемыми задачками. Ведь любой язык вначале проектировался для очень действенного решения какого-то собственного класса задач. язык Фортран (Fortran — FORmula TRANslator – транслятор формул) – для численных вычислений, язык Лисп (Lisp –LISt Processing – обработка списков) – для решения задач искусственного ума, Пролог (Prolog – PRO LOGic) – для программирования в определениях логики и т.д. Таковым образом ещё до написания программки встаёт вопросец выбора языка программирования, который бы представлял более пригодные средства для решения поставленной задачки. Постановка задачки обязана быть ясна из вышесказанного. Ниже создатель постарался сконструировать главные требования к программной реализации и на базе как постановки задачки, так и этих требований избрать язык программирования.

Требования к программной реализации:

Как можно наименьший объём кода, дописываемого к защищаемому программному продукту.

Как можно наименьшее время работы кода защиты перед передачей управления главный (защищаемой) программке.

Для реализации программки создателем избран язык программирования ассемблер (Assembler). Подчеркнём те индивидуальности языка, которые и обусловили этот выбор:

Ассемблер является языком низкого (машинного) уровня, в отличие от языков высочайшего уровня (ЯВУ), из которых более нередко используемыми в крайнее время являются Бейсик (Basic), Паскаль (Pascal), Си (С). Как следует язык Ассемблера очень приближен к аппаратным средствам компа и его «натуральным» способностям, что дозволяет организовать конкретное управление аппаратурой.

Программки на языке ассемблера весьма детальны. язык ассемблера просит планирования практически всякого шага ЭВМ . человек, который знаком лишь с языками высочайшего уровня, возможно, отнесёт это событие к недочету языка. Его можно осознать, так как, во-1-х, при большенном объёме начального текста резко увеличивается возможность ошибки, а во-2-х, нескончаемое число деталей может помешать достигнуть оптимальности программки в целом. Но, наибольшая детализация (ведь одна мнемоника языка ассемблера соответствует одной машинной команде) дозволяет решать задачки управления аппаратурой очень отлично, т.е. при маленьком объёме кода (это не значит малеханького размера начального текста) за малое время.

Структура программки.

программка состоит из трёх модулей:

Модуль Frozen — подготавливает главную дискету и записывает на неё инсталлятор, в который включает защищаемую программку.

Модуль Install, который инспектирует дискету и, если она является главный, устанавливает на винчестер пользовательскую программку (Task), защищённую модулем Ind.

Модуль Ind, который при первом запуске описывает свойства среды и сохраняет их, а при всех следующих пусках ассоциирует текущие свойства среды с определёнными при первом запуске. Если свойства не поменялись, то модуль расшифровывает и запускает Task. Опосля отработки Task удаляется с винчестера.

Разглядим эти модули поподробнее.

Модуль Frozen.

Модуль Frozen подготавливает главную дискету последующим образом. На дискете форматируется дорожка с номером 80 (нумерация дорожек начинается с нуля). Потому что DOSом на дискетах объёмом 1.44 мб употребляются лишь дорожки с номерами от 0 до 79, это действие никак не воздействует на информацию, хранимую обыденным методом. Дорожки, находящиеся за обычным полем форматирования (в случае дискеты 1.44 мб – это дорожки с номерами не наименее 80), именуют инженерными цилиндрами. В 1-ый сектор восьмидесятой дорожки (длина сектора – 512 б, нумерация секторов ведётся с единицы) записывается счётчик копий и сигнатура. Счётчик копий представляет собой б, который содержит оставшееся число установок защищённой программки. программка Frozen запрашивает у юзера количество копий и приобретенным числом инициализирует счётчик копий. Сигнатурой является строчка «Copyright © KES_Company, 1998». Опосля этого на приготовленную дискету записывается модуль Install, включающий защищаемую программку Task.

Модуль Install.

Итак, модуль Frozen записывает на главную дискету модуль Install.

Модуль Install производит установку модуля Ind на жёсткий диск лишь при одновременном выполнении 2-ух критерий:

программка Install обязана быть запущена с главный дискеты – дискеты, приготовленной модулем Frozen;

счётчик копий не должен быть равен нулю.

Как следует, одной из задач модуля Install является определение факта подлинности главный дискеты. Данная задачка решается последующим образом. Программка Install читает 1-ый сектор восьмидесятой дорожки и, если он содержит сигнатуру, то делается вывод о подлинности главный дискеты. Опосля каждой установки счётчик копий декрементируется. Если количество установок (данное при подготовке дискеты программкой Frozen) с данной дискеты исчерпано. Опосля записи на жёсткий диск модуля Ind модуль Install запускает его на выполнение. Смысл этого деяния будет понятен из нижеследующего описания модуля Ind.

Модуль Ind.

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

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

Личные свойства.

Личные свойства, применяемые при работе модулем Ind:

FDDCount – число накопителей на гибких магнитных дисках (НГМД);

FDDType – тип накопителей НГМД;

BaseMemory – объём базисной памяти;

ExtMemory – объём расширенной памяти (памяти сверх 1 мб);

BIOSData – дата издания ROM-==BIOS;

CPUType – тип центрального микропроцессора;

CPUFeatureинформация, характеризующая способности центрального микропроцессора;

VESAVersionверсия VBE (VESA BIOS Extension);

VideoMemory – объём видеопамяти;

VESAOEMStringинформация производителя видеоплаты.

Разглядим сейчас процесс определения этих черт.

Определение числа НГМД.

В области данных BIOS по адресу 0:0410h хранится двухсловная переменная, именуемая перечнем оборудования. Перечень оборудования содержит в себе число НГМД. Перечень оборудования заполняется компом во время POST (Power-On Self-Test), ROM-программы, выполняемой во время включения ПЭВМ. Биты 6-7 содержат число НГМД, уменьшенное на единицу.

Определение типа накопителей НГМД, объёма базисной и расширенной памяти.

В современных компах для хранения текущей конфигурации аппаратных средств употребляется энергонезависимая память CMOS. Эта память исходя из убеждений программера состоит из набора ячеек, доступ к которым для чтения и записи производится через порты ввода-вывода с адресами 70h и 71h. Процедура чтения ячейки CMOS состоит из 2-ух шагов. На первом шаге программка записывает в выходной порт с адресом 70h номер ячейки, из которой нужно прочесть информацию. На втором шаге программка читает содержимое данной ячейки из входного порта с адресом 71h. В памяти CMOS хранится текущее время и дата, сведения о конфигурации системы, итог тестирования при включении питания и иная информация. В том числе в ячейке с адресом 10h хранится тип накопителей НГМД, в ячейках с адресами 15h-16h – объём главный памяти и в ячейках с адресами 17h-18h – объём расширенной памяти (это
Определение даты издания ROM-==BIOS.

Дата издания ROM-BIOS в коде ASCII хранится в области данных BIOS по адресу F000:FFF5 и занимает 8 б.

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

Для определения микропроцессоров младше Pentium применена методика, изложенная в [14].

Метод определения микропроцессоров Intel 8086/8088 основан на том факте, что биты 12-15 регистра FLAGS постоянно установлены в единицу. До этого всего программка переписывает текущее содержимое регистра FLAGS в регистр AX. Для этого употребляется стек:

PUSHF

POP AX

Дальше программка пробует записать нулевые значения в биты 12-15 регистра FLAGS:

AND AX,0FFFh

PUSH AX

POPF

сейчас необходимо проверить, поменялось ли содержимое обозначенных битов регистра FLAGS. Для этого новое содержимое регистра FLAGS переписывается через стек в регистр AX, а потом опосля наложения маски 0F000h, сравнивается со значением 0F000h:

PUSHF

POP AX

AND AX,0F000h

CMP AX,0F000h

JE this_8086

Если биты 12-15 остались установленными в единичное

Программные коды для определения остальных типов микропроцессора не приводятся, потому что они подобны приведённым.

В микропроцессоре Intel 80286, когда он работает в настоящем режиме адресации, биты 12-15 регистра FLAGS постоянно сброшены в нуль, что можно применять для обнаружения данной модели микропроцессора.

Для того, чтоб отличить машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) (либо вычислительной системы) которое делает арифметические и логические операции данные программкой преобразования инфы управляет вычислительным действием и коор Intel 80386 от микропроцессоров старших моделей, можно испытать установить в регистре EFLAGS бит 18. Этот бит был в первый раз определён в микропроцессоре Intel 80486 для сигнализации ошибки сглаживания. Его нереально установить в микропроцессоре Intel 80386.

Отличительная изюминка микропроцессора Intel 80486 – невозможность конфигурации состояния бита 21 регистра EFLAGS. Этот бит употребляется микропроцессорами Intel Pentium и наиболее старшими моделями микропроцессоров Intel для определения способности вызова команды идентификации микропроцессора CPUID.

В новейших микропроцессорах конторы Intel (включая все микропроцессоры Pentium и старше) возникла новенькая команда CPUID, специально созданная для определения модели микропроцессора. В программке эту команду можно найти в виде макроса последующим образом:

CPUID MACRO

DB 0Fh

DB 0A2h

ENDM

Для определения модели микропроцессора следует вызвать команду CPUID, загрузив за ранее в регистр EAX

MOV EAX,1

CPUID

При всем этом в регистр EAX будет загружено слово сигнатуры, по которому можно будет найти модель микропроцессора, а в регистр EDX – слово, состоящее из отдельных флагов, характеризующих способности микропроцессора (feature flags). Конкретно содержимое этих 2-ух регистров (EAX, EDX) и сохраняется в полях CPUType (EAX) и CPUFeature (EDX) программки в случае, если микропроцессор не младше Pentium. В других вариантах CPUFeature равно нулю, а CPUType кодируется последующим образом:

CPUType

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

1 Intel 8086/8088 2 Intel 80286 3 Intel 80386 4 Intel 80486
Определение версии VBE, объёма видеопамяти и инфы производителя видеоплаты.

Определение данных черт даёт нам возможность идентифицировать

MOV AX, 4F00h

ES:DI должны указывать на буфер размером 256, 1-ые четыре б которого должны содержать «VBE2»

INT 10h

Как итог выполнения данной функции поля буфера заполнены информацией, характеризующие версия VBE, объём видеопамяти, представленный в блоках размером по 64 кб, указатель на строчку формата ASCIIZ, содержащую информацию конторы производителя видеоплаты.

Группы черт.

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

Все личные свойства разбиты на группы. Любая группа черт идентифицирует какой-нибудь компонент компа (видеоплату, материнскую плату (Motherboard), дисководы (FDD) и т.д.) При изменении черт в границах одной группы не делается вывода о беззаконности копии, а осуществляется 1-го(!) компонента ЭВМ продолжить работу с защищённой программкой. Если меняется наиболее, чем одна группа, то в этом случае делается вывод о несанкционированном переносе программки на иной комп.

Группа

Компонент

Свойства

FDD

дисковод

FDDCount

FDDType

RAM

ОЗУ

BaseMemory

ExtMemory

==BIOS

Материнская плата, ПЗУ

BIOSData

CPU

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

CPUType

CPUFeature

Video

Графический адаптер

VESAVersion

VideoMemory

VESAOEMString

Хранение личных черт.

Хранение личных черт скооперировано так, что их недозволено скопировать обычными средствами. Не считая того, личные свойства хранятся в зашифрованном виде. Применяется шифрование способом XOR с константой 0ABh. Понятно, что меньшей порцией инфы, хранимой на жёстком диске является кластер. Если программка занимает не целое число кластеров, то за логическими пределами файла остаётся некое место, которое и употребляется для хранения личных черт. При всем этом возникает неувязка – если дискового места за логическими пределами файла не хватает для размещения там личных черт. Данная неувязка решается удлинением файла на такое количество б, чтоб гарантированно обеспечить нужное место. Мысль некопируемости расположенной таковым образом инфы заключается в том, что обычные утилиты копирования (Copy) не копируют такое место, ориентируясь по настоящей длине файла. При использовании данного способа, оказывается, недозволено «легитимно» копировать программку не только лишь на иной комп, да и на комп, на который программка была установлена. Таковым образом на жёстком разрешается хранить лишь одну работающую копию программки. Но, благодаря методу перемещения операционной системы DOS (при перемещении файла переписывается лишь номер исходного кластера, без копирования файла на новое пространство), позволяется переносить (Move) программку в иной каталог такого же диска без утраты работоспособности.

Шифрование защищаемой программки.

Защищаемая программка (Task) хранится в модуле Ind в зашифрованном виде. Из суждений быстродействия (ведь Task расшифровывается при любом “легитимном” запуске Ind) избран очень обычный способ шифрования – способ XOR с константой 0A5h.

Пуск наружной программки.

В 2-ух вариантах нам приходилось запускать из программ остальные программки:

из Install программку Ind;

из Ind программку Task.

Разглядим эту функцию поподробнее. Во время работы программки ей выделяется очень доступное количество оперативки. Для того, чтоб запустить внешнюю (по отношению к текущей) программку нужно высвободить такое количество памяти, чтоб её хватило для обычной работы запускаемой программки. Потому что мы заблаговременно не знаем сколько памяти будет нужно защищаемой программке освободим очень вероятный её объём. Это достигается последующим образом. Сегменты программки размещаются таковым образом, чтоб кодовый сектор оказался первым. В самом начале кодового сектора кодируется команда JMP. За ней размещены лишь те данные которые нужны для пуска наружного процесса. Потом коды, которые нужны для пуска наружной программки и заключительных действий опосля возврате из неё. Конкретно перед пуском размер выделенного родительской программке блока памяти (при помощи функции DOS 4Ah) миниатюризируется так, что в памяти остаётся размещённым лишь запускающий участок кода и его данные. Последующим шагом на него передаётся управление.

Работа с НГМД.

Все деяния, связанные с работой с критичной информацией главный дискеты, как то форматирование дорожки с номером 80, чтение/запись сектора 1 на 80 дорожке осуществляются, используя программирование контроллера НГМД физически. Работа с НГМД ведётся через порты. Фрагменты программки, реализующие работу с НГМД физически приводятся в приложении 6.3.

Выводы

Проанализирована общая структура системы защиты от несанкционированного копирования и на базе этого анализа выбрана структура системы для реализации.

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

Привязка к определенному компу осуществлена с внедрением огромного количества его личных черт. (Как показано в п. 3.2.3 одной таковой свойства недостаточно.)

Разработана теория объединения личных черт в группы, внедрение которой уменьшает неудобства юзера системы. (См. п. 3.2.3.)

Применено программирование контроллера НГМД на физическом уровне, средством что организована работа с главный дискетой.

Литература

Абель П. язык Ассемблера для IBM PC и программирования / Пер. с англ. Ю.В. Сальникова. — М.: Высш. шк., 1992. — 447 с.: ил.

Бродин В.Б., Шагурин И.И. интерфейс. — М.: «ДИАЛОГ-МИФИ», 1993. — 240 с.

Григорьев В.Л. Касперский Е. Компьютерные вирусы в MS-DOS. М.: Издательство «ЭДЭЛЬ», 1992. — 176 с.

Нортон П., Соухэ Д. язык ассемблера для IBM PC: Пер. с англ., — М.: Издательство «Комп»; деньги и статистика, 1992. — 352 с.: ил.

Пильщиков В.Н. Программирование на языке ассемблера IBM PC. — М.: «ДИАЛОГ-МИФИ», 1996. — 288 с.

Правиков Д.И. Главные дискеты. Разработка частей систем защиты от несанкционированного копирования. – М.: Радио и связь, 1995. – 128 с.: ил.

Скляров В.А. Применение ПЭВМ. В 3 кн. Кн. 1. Организация и управление ресурсами ПЭВМ: Практ. пособие. — М.: Высш. шк., 1992. 158 с.: ил.

Скляров В.А. Применение ПЭВМ. В 3 кн. Кн. 2. Операционные системы ПЭВМ: Практ. пособие. — М.: Высш. шк., 1992. 144 с.: ил.

Скэнлон Л. Индивидуальные ЭВМ IBM PC и XT. Программирование на языке ассемблера: Пер. с англ. — 2-е изд., стереотип. — М.: Радио и связь. 1991. — 336 с.: ил.

Фодор Ж., Бонифас Д., Танги Ж. Операционные системы — от PC до PS/2: Пер. с франц. — М.: мир, 1992. — 319 с., ил.

Фаронов В.В. Турбо Паскаль (в 3-х книжках). Кн. 3. Практика программирования. часть 2. — М.: Учебно-инженерный центр «МВТУ — ФЕСТО ДИДАКТИК», 1993. — 304 с., ил.

Финогенов К.Г. Самоучитель по системным функциям MS-DOS. — Изд. 2, перераб. и дополн. — М.: Радио и связь, Энтроп, 1995. — 382 с., ил.

Фролов А.В., Фролов Г.В. Аппаратное обеспечение индивидуального компа. — М.: ДИАЛОГ-МИФИ, 1997. — 304 с. — (библиотека системного программера; Т. 33)

Хоган Т. Аппаратные и программные средства индивидуальных компов: Справочник. В 2-х кн. Кн.1. — М.: Радио и связь, 1995. — 384 с.

2B ProGroup: Вегнер В.А., Крутяков А.Ю., Серегин В.В., Сидоров В.А., Спесивцев А.В. Аппаратура индивидуальных компов и её программирование. IBM PC/XT/AT и PS/2. — М: Радио и связь, 1995. — 224 с. — (библиотека системного программера).

2B Programmers Group: Спесивцев А.В., Вегнер В.А., Крутяков А.Ю., Серегин В.В., Сидоров В.А. защита инфы в индивидуальных ЭВМ . — М.: Радио и связь, МП «Веста», 1992. — 192 с.: ил. — (библиотека системного программера)

Приложение
Требования к аппаратуре.

программка работает лишь с дискетами размером 3.5” объёмом 1.44 мб, которые форматированы обычным образом.

Требования к программному обеспечению.

Программки комплекса должны быть запущены в настоящем режиме из-под DOS версии 6.22.

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

Фрагменты программ.

Фрагменты программ комплекса, реализующие работу с НГМД физически.

Макросы, облегчающие работу с процедурами нижнего уровня, конкретно осуществляющими управление НГМД. (файл ngmd.mac.)

;Передача б в контроллер НГМД

out_ngmd MACRO byte

LOCAL @Ok

mov AH,byte

call OutFDC

jnc @Ok

FatalError

@Ok:

ENDM

; Приём б из контроллера НГМД

in_ngmd MACRO Mem

LOCAL @Ok

push AX

call InFDC

jnc @Ok

jmp @ErrFatal

@Ok: IFNB <Mem>

mov Mem,AL

ENDIF

pop AX

ENDM

; Ожидание прерывания от контроллера НГМД

WaitInt MACRO

LOCAL @Ok

call _WaitInt

jnc @Ok

FatalError

@Ok:

ENDM

; Критичная ошибка

FatalError MACRO

jmp @ErrFatal

ENDM

; Размещение головки дисковода

; Вход:

; D – номер накопителя

; HDS – номер головки

; NCN – номер дорожки

ngmdSeek MACRO D,HDS,NCN

LOCAL @Ok

mov DL,D

mov DH,HDS

mov CH,NCN

shl DH,2

or DL,DH

call _ngmdSeek

jnc @Ok

FatalError

@Ok:

ENDM

; Чтение сектора

; D – номер дисковода

; HDS – номер головки (стороны)

; NCN – номер дорожки

; R – номер сектора 

; Buf — буфер

ngmdRead MACRO D,HDS,NCN,R,Buf

mov DL,D

mov DH,HDS

mov CH,NCN

mov CL,R

mov AX,DS

mov ES,AX

lea DI,Buf

call _ngmdRead

ENDM

; Запись сектора

; D – номер дисковода

; HDS – номер головки (стороны)

; NCN – номер дорожки

; R – номер сектора 

; Buf — буфер

ngmdWrite MACRO D,HDS,NCN,R,Buf

mov DL,D

mov DH,HDS

mov CH,NCN

mov CL,R

mov AX,DS

mov ES,AX

lea DI,Buf

call _ngmdWrite

ENDM

Фрагмент модуля Frozen, демонстрирующий форматирование дорожки. (файл frozen.asm.)

; Переменная для хранения старенького вектора 8h

Old_8h dd 0

; Переменная для организации задержек

RtCounter dw 0

; Свой обработчик прерывания 8h (Timer)

; для организации задержек

Int_8h PROC

push AX

cmp CS:RtCounter,0

je New08IRet

dec CS:RtCounter

New08IRet:

; Обычные деяния по корректировке времени

push DS

mov AX,40h ;Настройка на область данных ==BIOS

mov DS,AX

add WORD PTR DS:[6Ch],1

adc WORD PTR DS:[6Eh],0

cmp WORD PTR DS:[6Eh],0018h

jne New08Time

cmp Word PTR DS:[6Ch],00B0h

jne New08Time

mov BYTE PTR DS:[70h],1

mov WORD PTR DS:[6Ch],0

mov Word PTR DS:[6Eh],0

New08Time: pop DS

mov AL,20h

out 20h,AL

jmp SHORT $+2

pop AX

iret

Int_8h ENDP

; Флаг для установки факта прихода прерывания

f_Int0Eh db 0

; Переменная для хранения старенького вектора 0Eh

Old_0Eh dd 0

; Свой обработчик прерывания 0Eh

; для определения факта прихода прерывания от НГМД

Int_0Eh PROC

push AX

mov CS:f_Int0Eh,1

mov AL,20h

out 20h,AL

jmp SHORT $+2

pop AX

iret

Int_0Eh ENDP

Main PROC

; Пропущено (skip)

; Настройка ES на таблицу векторов прерываний

xor AX,AX

mov ES,AX

; Сохранение вектора 8h (Timer)

GetIntVec 8h,CS:Old_8h

; установка собственного обработчика прерывания 8h

SetIntVec 8h

; Сохранение вектора 0Eh (прерывание от НГМД)

GetIntVec 0Eh,CS:Old_0Eh

; установка собственного обработчика прерывания 0Eh

SetIntVec 0Eh

; Установка скорости передачи данных меж контроллером и накопителем

xor AX,AX ;500 килобит/сек

mov DX,03F7h ;CCR

out DX,AL

jmp SHORT $+2

; Сброс контроллера НГМД

call _ngmdReset

; Подготовка таблицы формата

lea SI,FormatBuf

mov BYTE PTR DS:[SI],4Dh ;Код команды FORMAT

mov BYTE PTR DS:[SI+1],0 ;головка 0, накопитель A:

mov BYTE PTR DS:[SI+2],2 ;Размер сектора – 512 б

mov BYTE PTR DS:[SI+3],18 ;количество секторов

mov BYTE PTR DS:[SI+4],108 ;Размер GAP3

mov BYTE PTR DS:[SI+5],066h ;знак-заполнитель

add SI,2

mov CX,18

xor AX,AX

PrepForFormat:

inc AL

add SI,4

mov BYTE PTR DS:[SI],80 ;Цилиндр

mov BYTE PTR DS:[SI+1],0 ;поверхность

mov BYTE PTR DS:[SI+2],AL ;Номер сектора

mov BYTE PTR DS:[SI+3],2 ;Код длины сектора

loop PrepForFormat

; Размещение головки дисковода A:

; головка — 0

; дорожка — 80

ngmdSeek 0,0,80

push DS

pop ES

mov AL,4Ah

mov CX,18*4

lea DI,FormatBuf

add DI,6

; Подготовка канала DMA для передачи данных в НГМД

call SetDMA

; Передача данных в НГМД — форматирование

mov CX,6

lea SI,FormatBuf

cld

FormatTableHeader:

lodsb

out_ngmd AL

loop FormatTableHeader

; Ожидание прерывания от НГМД

WaitInt

in_ngmd ST0

REPT 6

in_ngmd

ENDM

mov AH,ST0

and AH,11000000b

or AH,AH

jz @Ok1

@ErrFatal:

; Критичная ошибка

mov AH,9

lea DX,MesErrFatal

int 21h

jmp @MotorOff

@Ok1:

call _ngmdReset

ngmdWrite 0,0,80,1,Sector

@MotorOff:

; Сброс контроллера НГМД

call _ngmdReset

; Выключение электродвигателя НГМД

mov DX,3F2h

mov AL,0Ch

out DX,AL

mov AX,0

mov ES,AX

; Восстановление вектора 0Eh

RestoreIntVec 0Eh

; Восстановление вектора 8h

RestoreIntVec 8h

; Пропущено (skip)

Main ENDP

Процедуры нижнего уровня, конкретно работающие с контроллером НГМД и контроллером DMA. (Файлы frozen.asm и install.asm.)

; Передача данных в контроллер НГМД

;

; Вход:

; AH – б для передачи

; Выход:

; CF = 1 — Ошибка

; CF = 0 — б передан

OutFDC PROC

push AX

push BX

push CX

push DX

mov DX,3F4h

mov BL,2

xor CX,CX

OutFDC1: in AL,DX

and AL,11000000b

cmp AL,10000000b

je OutFDC2

loop OutFDC1

dec BL

jnz OutFDC1

stc

jmp SHORT OutFDCRet

OutFDC2: inc DX

mov AL,AH

out DX,AL

jmp SHORT $+2

mov BX,29

call WaitTimer2

clc

OutFDCRet:

pop DX

pop CX

pop BX

pop AX

ret

OutFDC ENDP

; Приём б из контроллера НГМД

;

; Выход:

; AL – принятый б

; CF = 1 — Ошибка

; CF = 0 — Б принят

InFDC PROC

push BX

push CX

push DX

mov DX,3F4h

InFDC0: mov BL,2

xor CX,CX

InFDC1: in AL,DX

and AL,11000000b

cmp AL,11000000b

je InFDC2

loop InFDC1

dec BL

jnz InFDC1

stc

jmp SHORT InFDCRet

InFDC2: inc DX

in AL,DX

mov BX,29

call WaitTimer2

clc

InFDCRet:

pop DX

pop CX

pop BX

ret

InFDC ENDP

; инициализация DMA

;

; Вход:

; AL – код операции

; AL = 4Ah – передать в НГМД

; AL = 46h – передавать из НГМД

; ES:DI —  адресок буфера

; CX – длина данных

SetDMA PROC

push AX

push CX

cli

push AX

mov AL,00000110b

out 0Ah,AL

jmp SHORT $+2

pop AX

out 0Ch,AL

jmp SHORT $+2

out 0Bh,AL

jmp SHORT $+2

push CX

mov AX,ES

mov CL,4

rol AX,CL

mov CH,AL

and AL,0F0h

add AX,DI

adc CH,0

out 4,AL

jmp SHORT $+2

mov AL,AH

out 4,AL

jmp SHORT $+2

mov AL,CH

and AL,0Fh

out 81h,AL

jmp SHORT $+2

pop AX

dec AX

out 5,AL

jmp SHORT $+2

mov AL,AH

out 5,AL

jmp SHORT $+2

mov AL,2

out 0Ah,AL

jmp SHORT $+2

sti

pop CX

pop AX

ret

SetDMA ENDP

; Ожидание прерывания от НГМД

_WaitInt PROC

mov CS:f_Int0Eh,0

mov CS:RtCounter,2000/55 ;2 сек.

WaitIntLoop:

cmp CS:f_Int0Eh,0

jne WaitIntCF0

cmp CS:RtCounter,0

jne WaitIntLoop

stc

jmp SHORT WaitIntRet

WaitIntCF0: clc

WaitIntRet: ret

_WaitInt ENDP

; Выполнение команды НГМД «Считать состояние прерывания»

; (Sense Interrupt Status)

Sensl PROC

out_ngmd 00001000b

in_ngmd ST0

in_ngmd

ret

Sensl ENDP

; Seek

; DL – номер дисковода и номер головки

; CH – номер дорожки

_ngmdSeek PROC

push AX

out_ngmd 0Fh ; Код команды для поиска

out_ngmd DL ; Номер дисковода и номер головки

out_ngmd CH ; Номер дорожки

WaitInt

Delay 5 ; время установки головки (225 ms)

call Sensl

mov AL,ST0

and AL,11100000b

cmp AL,00100000b

je @SeekOk

stc

jmp SHORT @SeekRet

@SeekOk: clc

@SeekRet: pop AX

ret

_ngmdSeek ENDP

; Чтение сектора

;

; Вход:

; DL – номер дисковода

; DH – номер головки стороны

; CH – номер дорожки

; CL – номер сектора

; ES:DI — буфер

_ngmdRead PROC

push DX

; Размещение головки

and DL,00000011b

and DH,00000001b

shl DH,2

or DL,DH

shr DH,2

call _ngmdSeek

; инициализация контроллера DMA

push CX

mov CX,512

mov AL,46h

call SetDMA

pop CX

out_ngmd 46h ; Код команды чтения

out_ngmd DL ; Номер головки и накопителя

out_ngmd CH ; Номер дорожки

out_ngmd DH ; Номер головки

out_ngmd CL ; Номер сектора

out_ngmd 2 ; Код длины сектора

out_ngmd 18 ; количество секторов на дорожке

out_ngmd 108 ; Длина межсекторного промежутка

out_ngmd 0FFh ; Длина передаваемых данных

; Ожидание прерывания от НГМД

WaitInt

REPT 7

in_ngmd

ENDM

pop DX

ret

_ngmdRead ENDP

; Запись сектора

;

; Вход:

; DL – номер дисковода

; DH – номер головки (стороны)

; CH – номер дорожки

; CL – номер сектора

; ES:DI — буфер

_ngmdWrite PROC

push DX

; Размещение головки

and DL,00000011b

and DH,00000001b

shl DH,2

or DL,DH

shr DH,2

call _ngmdSeek

; инициализация контроллера DMA

push CX

mov CX,512

mov AL,4Ah

call SetDMA

pop CX

out_ngmd 45h ; Код команды записи

out_ngmd DL ; Номер головки и накопителя

out_ngmd CH ; Номер дорожки

out_ngmd DH ; Номер головки

out_ngmd CL ; Номер сектора

out_ngmd 2 ; Код длины сектора

out_ngmd 18 ; количество секторов на дорожке

out_ngmd 108 ; Длина межсекторного промежутка

out_ngmd 0FFh ; Длина передаваемых данных

; Ожидание прерывания от НГМД

WaitInt

REPT 7

in_ngmd

ENDM

pop DX

ret

_ngmdWrite ENDP

; Сброс контроллера НГМД

_ngmdReset PROC

; Исходный сброс

cli

mov AL,00011000b

mov DX,3F2h

out DX,AL

jmp SHORT $+2

mov BX,29

call WaitTimer2

mov AL,00011100b

out DX,AL

jmp SHORT $+2

sti

; Ожидание прерывания от НГМД

WaitInt

mov CX,4

mov DL,11000000b

ResetSens:

; Считать состояние прерывания

call Sensl

mov AH,ST0

cmp AH,DL

je @Ok3

FatalError

@Ok3: inc DL

loop ResetSens

; Задержка

Delay 1000/55

out_ngmd 00000011b ;Код команды Specify

out_ngmd 0AFh ;характеристики SRT|HUT

out_ngmd 2h ;Характеристики HLT|ND

mov CX,2

RecalRestart:

cli

out_ngmd 00000111b ;Код команды Recalibrate

out_ngmd 0 ;Накопитель – A:

sti

; Ожидание прерывания от НГМД

WaitInt

; Считать состояние прерывания

call Sensl

mov AH,ST0

test AH,00100000b

jz RecalTry

and AH,11000000b

test AH,11000000b

jz RecalCompl

RecalTry:

loop RecalRestart

jmp @ErrFatal

RecalCompl:

; Задержка

mov BX,18750

call WaitTimer2

ret

_ngmdReset ENDP

42

приложение 4

Столичный ордена Ленина, ордена Октябрьской Революции

и ордена Трудового Красноватого Знамени

муниципальный технический институт им. Н. Э. Баумана

Факультет «Информатика и системы управления»

Кафедра «Программное обеспечение ЭВМ и информационные технологии»

РАСЧЕТНО-ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовому проекту на тему:

«Система защиты от несанкционированного копирования»

Студент __________ ( Кожичкин Е. С. ) Группа ИУ7-62

Управляющий проекта __________ ( Алексеев Ю. Е. )

1998 г.

Факультет ИУ

Кафедра ИУ7

З А Д А Н И Е

на курсовой проект

По курсу Системное программирование

Студент Кожичкин Е.С. ИУ7-62

Управляющий Алексеев Ю.Е.

Тема проекта Система защиты от несанкционированного копирования

Техническое задание Провести анализ общей структуры систем защиты от несанкционированного копирования. Создать систему защиты от копирования. Работа с главный дискетой с ограниченным числом установок.

Объём и содержание проекта (графических работ 2 листов формата 21, расчётно-пояснительная записка на 40 листах формата II).

Дата выдачи «16» февраля 1998 г.

Доп указания по проектированию

Запретить копирование инсталлированной программки с жёсткого диска на остальные носители. Разрешить перемещение инсталлированной программки в границах логического диска. Употреблять программирование НГМД физически. Реализация под DOS. Работа со обычными дискетами 1.44 М.

]]>