![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Защита DLL библиотек с помощью Sentinel HASP APIСодержание книги
Поиск на нашем сайте
Цель работы
Разработать программу средствами 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 и в случае успешной проверки вычислять определенный интеграл функции
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 ДЛЯ ЗАЩИТЫ ИНФОРМАЦИИ. ЗАЩИТА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Игорь Викторович Ананченко
Печ. л. 4.2 Тираж ___ экз. Санкт-Петербургский государственный технологический институт (Технический университет)
Типография издательства СПбГТИ(ТУ) 49-49-365
|
|||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-18; просмотров: 555; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.250.18 (0.011 с.) |