ЗАЩИТА DLL БИБЛИОТЕК С ПОМОЩЬЮ SENTINEL HASP API



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


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



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


ЗНАЕТЕ ЛИ ВЫ?

ЗАЩИТА 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 и в случае успешной проверки вычислять определенный интеграл функции на заданном интервале. Различие состоит в том, что теперь функция вычисления интеграла вынесена в отдельную 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 г.


Содержание

 

Введение…………………………………………………………………….
1. Лабораторная работа 1. Защита исполняемых exe файлов с помощью навесной защиты HASP ……………………………………
1.1 Подготовительный этап ………………………………………………
1.2 Создание компонентов ……………………………………………….
1.3 Установка защиты ПО………………………………………………..
1.4 Формирование программного пакета ………………………………
1.5 Создание условно-бесплатной версии ……………………………..
1.6 Оформление и обработка заказов ………………………………….
1.7 Работа с защищенным приложением на стороне пользователя …
2. Лабораторная работа 2. Организация встроенной защиты программы, написанной на Deplhi с помощью SENTINEL HASP API ……………………………………………………………………..
3. Лабораторная работа 3. Защита DLL библиотек с помощью Sentinel HASP …………………………………………………………  
Литература …………………………………………………………………
   

 


Кафедра системного анализа

Методические указания

ИСПОЛЬЗОВАНИЕ КЛЮЧЕЙ СЕРИИ HASP HL ДЛЯ ЗАЩИТЫ ИНФОРМАЦИИ. ЗАЩИТА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

 

Игорь Викторович Ананченко

 

 

Отпечатано с оригинал-макета. Формат 60´90.1/16

Печ. л. 4.2 Тираж ___ экз.

Санкт-Петербургский государственный технологический институт

(Технический университет)

 

190013, Санкт-Петербург, Московский пр., 26

Типография издательства СПбГТИ(ТУ) 49-49-365



Последнее изменение этой страницы: 2016-04-18; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.80.6.131 (0.009 с.)