Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Защита DLL библиотек с помощью Sentinel HASP API↑ ⇐ ПредыдущаяСтр 4 из 4 Содержание книги
Поиск на нашем сайте
Цель работы
Разработать программу средствами Deplhi, использующую динамически подключаемую библиотеку DLL, защищенную с помощью Sentinel HASP.
Краткие сведения о DLL DLL (англ. dynamic-link library — «библиотека динамической компоновки», «динамически подключаемая библиотека») — понятие операционных систем Microsoft Windows и IBM OS/2, динамическая библиотека, позволяющая многократное использование различными программными приложениями. K DLL относятся также элементы управления ActiveX и драйверы. Формат файлов DLL придерживается тех же соглашений, что и формат исполняемых файлов, сочетая код, таблицы и ресурсы, отличаясь лишь интерпретацией некоторых полей. Аналогично защите основного кода программы, Sentinel HASP API позволяет защитить и DLL библиотеку. Это подразумевает под собой внедрение функций HASP API в код динамических библиотек. При этом разработчик программного обеспечения имеет возможность пользоваться всеми доступными функциями (рассмотрены в работе 2). 1. Программа, как и в лабораторной работе 2, должна проверять доступность аппаратного ключа HASP и в случае успешной проверки вычислять определенный интеграл функции на заданном интервале. Различие состоит в том, что теперь функция вычисления интеграла вынесена в отдельную DLL библиотеку и будет импортирована из нее в процессе работы. Поскольку в эту библиотеку будет устанавливаться встроенная защита, то необходимо добавить в папку с проектом вспомогательные файлы, выполнив пункт 1 задания к лабораторной работе 2.
2. Далее необходимо запустить программу Borland Delphi и создать новый объект DLL Wizard, File->New->DLL Wizard, как показано на рисунке 49.
Рисунок 49 – создание DLL библиотеки
3. После сохранения проекта, следует приступить к добавлению в программный модуль необходимых функций. В данном случае это процедура integral, которая будет в дальнейшем будет вызываться из DLL библиотеки, и функция f. Исходный код программного модуля: library Project1; uses SysUtils, Classes, hasp_unit; {$R *.res} {$I hasp_vcode.inc } function f(x,m:real):real; begin f:=x*x; end; procedure integral(a,b,e:real; n:integer; var s:real; var status: hasp_status_t); const SCOPE_VIEW_MAXSIZE = (1024 * 128); var handle: hasp_handle_t; handle2: hasp_handle_t; fsize: hasp_size_t; time: hasp_time_t; info: pchar; feature,i: integer; day, month, year, hour, minute, second: cardinal; scope: Array[0..SCOPE_VIEW_MAXSIZE-1] of char; view: Array[0..SCOPE_VIEW_MAXSIZE-1] of char; s1,d,m,raz:real; begin feature:= 50; status:= hasp_login(feature, @vendor_code[1], handle); if status = HASP_STATUS_OK then begin s1:=0; s:=200; raz:=100; m:=b-1; d:=(b-a)/n; while raz>e do begin for i:=0 to n do S1:=S1+d*(F(a + I*d, m) + F(a + (I+1)*d, m))/2; raz:=abs(s-s1); s:=s1; s1:=0; n:=n*2; d:=(b-a)/n; end; end; end; exports integral; begin end. 4. Необходимо обратить внимание, что экспортируется только процедура integral. Также можно увидеть в коде DLL библиотеки вызов функции hasp_login, что позволит проверить наличие подлинного ключа защиты. Теперь необходимо сформировать DLL-библиотеку, выполнив действия Project->Build All Projects. В папке с проектом появится файл Project1.dll, который нужно скопировать в папку основной программы и переименовать в HASP_INT.dll. 5. Далее следует приступить к формированию основной программы. Интерфейс пользователя не изменился, он представлен на рисунке 48. Однако код программы теперь выглядит иначе, поскольку были вынесены необходимые математические функции в отдельную DLL-библиотеку. Содержание программного модуля unit1.pas: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, hasp_unit; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Memo1: TMemo; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Edit4: TEdit; Label4: TLabel; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const AES_MIN_DATA_LEN = 16; { минимальная длина данных для AES шифрования } MAX_MEMORY = 128; { Макс. размер памяти, который будет обрабатываться } CUSTOM_FEATURE = 42; DEMO_MEMBUFFER_SIZE = 8; SCOPE_VIEW_MAXSIZE = (1024 * 128); var Form1: TForm1; a,b,s,d,e:real; n:integer; status: hasp_status_t; integral: procedure(a,b,e:real; n:integer; var s:real; var status: hasp_status_t); LibHandle: THandle; data: array[0..16] of byte = ($74, $65, $73, $74, $20, $73, $74, $72, $69, $6e, $67, $20, $31, $32, $33, $34, 0); membuffer: array [0..DEMO_MEMBUFFER_SIZE] of byte; datalen: hasp_size_t; implementation {$R *.dfm} {$I hasp_vcode.inc } procedure TForm1.FormCreate(Sender: TObject); begin Memo1.Clear(); end; procedure TForm1.Button1Click(Sender: TObject); begin @integral:= nil; LibHandle:= LoadLibrary('HASP_INT.dll'); if LibHandle >= 32 then begin @integral:= GetProcAddress(LibHandle,'integral'); if @integral <> nil then Memo1.Clear(); n:=100; a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); e:=StrToFloat(Edit4.Text); integral(a,b,e,n,s,status); if status = HASP_STATUS_OK then begin Memo1.Lines.Add(FloatToStr(s)); end else if status = HASP_FEATURE_NOT_FOUND then Showmessage('Невозможно подключиться к feature') else if status = HASP_CONTAINER_NOT_FOUND then Showmessage('HASP ключ с данным кодом не найден') else if status = HASP_OLD_DRIVER then Showmessage('Устаревшая версия драйвера аппаратного ключа защиты') else if status = HASP_NO_DRIVER then Showmessage('Драйвер ключа не установлен') else if status = HASP_INV_VCODE then Showmessage('Ошибка в коде ключа') else Showmessage('Подключение к feature закончилось неудачей'); end; FreeLibrary(LibHandle); end; end. 5. Важно обратить внимание на то, что в коде основной программы нет вызова функций Sentinel HASP API, а также присутствует механизм импорта функций из DLL библиотеки HASP_INT.dll 6. Теперь необходимо скомпилировать программу и проверить ее работоспособность при подключенном и отсутствующем ключе HASP HL. Результаты описать в выводе к отчету.
Контрольные вопросы 1. Объясните принцип работы DLL библиотек? 2. Какие преимущества дает использование DLL библиотек? Есть ли недостатки и если есть, то какие? 3. Опишите процесс создания динамически подключаемых библиотек в среде Borland Delphi? 4. Возможно ли использование нескольких DLL библиотек одной программой? Требования к содержанию отчета Отчет выполняется на листах формата А4, которые должны быть скреплены перед сдачей отчета преподавателю. Первый лист отчета титульный – содержит информацию об учебном заведении, кафедре, названии дисциплины, теме выполненной работы. Приводится информация об учащемся, выполнившим работу; информация о преподавателе, проверяющем работу. В нижней части листа информация о месте (городе), где находится учебное заведение и год выполнения работы. В содержательной части отчета о проделанной работе необходимо указать номер работы и тему работы. Затем описать ход выполнения работы. Желательно проиллюстрировать ход выполнения работы скриншотами (копиями экрана), полученными в процессе выполнения работы. Если преподавателем были заданы вопросы по выполнению работы, на которые предложено ответить письменно, то приводятся вопросы и ответы на них. Завершается отчет выводами по проделанной работе. Отмечаются достоинства и недостатки изученной технологии, область использования разработки и т.д. Желательно привести в отчете список использованной литературы и интернет ресурсов (сайтов сети Интернет). ЛИТЕРАТУРА
1. http://www.aladdin-rd.ru/catalog/hasp/ Sentinel HASP — защита, лицензирование и распространение программного обеспечения 2. http://www.aladdin-rd.ru/buy/?pid=4981 Цены и заказ продуктов 3. http://www.softkey.ru/catalog/program.php?chsph=46998645&ID=46511 HASP SRM - защита, лицензирование и распространение программного обеспечения (купить) 4. http://protect-online.ru/ Сервис лицензирования и защиты ПО (Sentinel HASP SL) 5. http://www.aladdin-rd.ru/support/downloads/get?ID=27822 Скачать комплект разработчика HASP (образ диска 1.41 Гб) Версия 5.12 рус. 6. http://www.aladdin-rd.ru/support/training/authentication Учебное пособие "Аутентификация: от А до Я" 7. http://www.aladdin-rd.ru/upload/Authentication_Book.zip Загрузить главы книги "Аутентификация: теория и практика обеспечения безопасного доступа к информационным ресурсам", 8. Шелупанов А. Аутентификация. Теория и практика обеспечения безопасного доступа к информационным ресурсам. / А. Шелупанов, С. Груздев, Ю. Нахаев, 552 стр., Издательство: Горячая Линия – Телеком, ISBN 978-5-9912-0110-0; 2009 г. Содержание
Кафедра системного анализа Методические указания ИСПОЛЬЗОВАНИЕ КЛЮЧЕЙ СЕРИИ HASP HL ДЛЯ ЗАЩИТЫ ИНФОРМАЦИИ. ЗАЩИТА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Игорь Викторович Ананченко
Отпечатано с оригинал-макета. Формат 60´90.1/16 Печ. л. 4.2 Тираж ___ экз. Санкт-Петербургский государственный технологический институт (Технический университет)
190013, Санкт-Петербург, Московский пр., 26 Типография издательства СПбГТИ(ТУ) 49-49-365
|
||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-18; просмотров: 547; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.114.198 (0.011 с.) |