Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Рекомендации при разработке приложения.

Лабораторная работа N1

 

Защита программ от несанкционированной эксплуатации за счет привязки к носителю информации

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

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

Среда ускоренной разработки приложений Delphi позволяет напрямую работать с функциями API-Windows.

Для получения информации об устройстве используется WinAPI функция GetVolumelnformation.

В HELP-e Delphi (раздел Windows SDK) дано следующее описание параметров этой функции:

BOOL GetVolumelnformation(

LPCTSTR IpRootPathName, // address of root directory of the file system

LPTSTR IpVolumeNameBuffer, // address of name of the volume DWORD nVolumeNameSize, // length of IpVolumeNameBuffer

LPDWORD IpVolumeSerialNumber, //address of volume serial number LPDWORD IpMaximumComponentLength, // address of system's maximum

//filename length

LPDWORD IpFileSystemFlags, //address of file system flags LPTSTR IpFileSystemNameBuffer. // address of name of file system DWORD nFileSystemNameSize // length of IpFileSystemNameBuffer

Параметры функции:

IpRootPathName - имя устройства, информацию о котором необходимо

получить;

IpVolumeNameBuffer - имя буфера, в который будет помещено имя тома;

nVolumeNameSize - размер буфера для имени тома;

IpVolumeSerialNumber - переменная, в которую будет записан серийный номер;

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

IpFileSystemFlags - флаги файловой системы, может быть любая комбинация флагов:

 

FS_CASE_IS_PRESERVED - файловая система сохраняет регистр имен файлов, когдасохраняет имя на диске;

FS_CASE_SENSITIVE - файловая система чувствительна к регистру имен файлов;

FS_UNICODE_STORED_ON_DISK - файловая система поддерживает имена в UNICODE;

FS_PERSISTENT_ACLS - файловая система поддерживает списки доступа (NTFS);

FS_FILE_COMPRESSION - файловая система поддерживает компрессию на уровне

файлов;

FS_VOL_IS_COMPRESSED - файловая система поддерживает компрессию на уровне тома;

 

IpFileSystemNameBuffer - буфер, в который будет помещено имя файловой системы;

nFileSystemNameSize - размер буфера для имени файловой системы.

 

 

Типы рассмотренных параметров  
   
IpRootPathName PChar;
IpVolumeNameBuffer PChar;
nVolumeNameSize dWord;
IpVolumeSerialNumber dWord;
IpMaximumComponentLength dWord;
IpFileSystemFlags dWord;
IpFileSystemNameBuffer PChar;
nFileSystemNameSize dWord;

 

Начальная загрузка параметров:

 

IpVolumeNameBuffer:=";

IpVolumeSerialNumber:= 0;

IpMaximumComponentLength:= 0;

IpFileSystemFlags:= 0;

IpFileSystemNameBuffer:=";

GetMem(lpVolumeNameBuffer, Max_Path+1); //выделение памяти для переменной

GetMem(lpFileSystemNameBuffer, Max_Path+1); //выделение памяти для переменной

nVolumeNameSize:= Nlax_Path+1;

nFileSystemNameSize:= Nlax_Path+1;

IpRootPathName:= PChar(DriveComboBox1.Drive+'iV);

//имя устройства определяется компонентом TDriveComboBox

 

Рекомендации по проектированию защиты программ:

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

- не храните коды в одном месте,

- не проверяйте код только в одном месте,

- не анализируйте характеристику сразу после ее получения (считывания),

- не создавайте для проверки функцию или библиотеку,

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

- применяйте отвлекающие функции проверок,

- не храните результаты проверок в переменных,

- не проверяйте контрольные данные одним алгоритмом,

- не храните результаты проверки в реестре,

- применяйте шифрование программ и данных,

- не записывайте текстовые строки в программе в их реальном виде.

Действия, направленные против использования отладчиков при взломе программ:

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

- изменение работы программы в случае ее выполнения в отладчике,

- усложнение листинга,

- зашифрованные строки в ресурсах.

Выполнение работы

Задание на подготовку к работе

1. На своем профиле создать новую папку для хранения разрабатываемого приложения.

2. Запустить Delphi. Среда программирования создаст «пустой» проект.

3. Записать «пустой» проект в папку на своем профиле (пункт основного меню File->Save Project as)

4. Подключить к системному блоку внешний носитель информации (flash-память)

Лабораторное задание

Задача лабораторной работы -

а) определить серийный номер подключенного внешнего носителя информации,

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

Рекомендации при разработке приложения.

3.1. Для определения серийного номера внешнего устройства создайте отдельное приложение и используйте в нем стандартный компонент TDriveComboBox. Возможный вариант интерфейса вспомогательного приложения приведен на рис.1

3.2. Для определения подключенных к компьютеру внешних устройств при встраивании защиты в программу используйте функции GetLogicalDrives: Integer и GetDriveType(Name: PChar): Integer.

Текст процедуры, выводящей в компонент TListBox список подключенных внешних устройств компьютера:

Содержание отчета

Отчет должен содержать

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

2. Цель и задание работы

3. Файлы проекта (Projectl.cfg, Projectl.dof, Projectl.dpr, Projectl.exe, Projectl.res, Unitl -dcu, Unitl.dfm, Unitl.pas)

4. Скриншоты результатов работы программы

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...