среда, 8 января 2014 г.

Hasp драйвер эмулятор скачать

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

В качестве примера рассмотрена технология hasp (Hardware Against Software Piracy разработанная компанией Aladdin Knowledge Systems Ltd.

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

Главным недостатком такой системы защиты является возможность перехвата вызовов диспетчера ввода-вывода и эмулирования аппаратного ключа.

Аналогично поступаем, если наш драйвер завершает работу раньше системы защиты.

IoCreateDevice(DriverObject, 0, usDeviceName, file_device_null, 0, 0, pDeviceObject IoCreateSymbolicLink( usSymbolicDeviceName, usDeviceName DriverObject- MajorFunctionIRP_MJ_create DriverDispatch; DriverObject- MajorFunctionIRP_MJ_close DriverDispatch; DriverObject- MajorFunctionIRP_MJ_read DriverDispatch; DriverObject- DriverUnload DriverUnload; Это нужно для того, чтобы работать с нашим перехватчиком как с файлом, используя функции CreateFileReadFileCloseHandle.

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

Однако хакер всегда разберется, что делать с защитой, пусть и аппаратной.

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



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

В прошлом данная технология являлась одной из самых популярных аппаратных систем защиты ПО.

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

В качестве примера рассмотрена технология hasp (Hardware Against Software Piracy разработанная компанией Aladdin Knowledge Systems Ltd.

Используя этот объект, защищенное приложение посредством диспетчера ввода-вывода проверяет лицензию на использование данного ПО.

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



Вот фрагмент кода функции, устанавливающей ловушку: ntstatus HookDevice(lpwstr lpDevice) unicode_string DeviceName; pdevice_object DeviceObject; pfile_object FileObject; RtlInitUnicodeString( DeviceName, lpDevice IoGetDeviceObjectPointer( DeviceName, 1u, FileObject, DeviceObject Получив указатель на структуру device_object, имеем указатель на driver_object.

OutputLength else if (Length 1 idlHead) if (idlHead- InputBuffer) ExFreePool(idlHead- InputBuffer if (idlHead- OutputBuffer) ExFreePool(idlHead- OutputBuffer idlTemp idlHead- ldlNext; ExFreePool(idlHead idlHead idlTemp; if (!idlTemp) idlTail null; Когда перехватчик готов, запускаем сначала его, а затем защищенное приложение с ключами и без.

Установленный софт будет работать только на той машине, в которую воткнут электронный ключ.

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

Популярный юридический справочник "КонсультантПлюс" также защищает доступ к данным с помощью электронных ключиков.

В прошлом данная технология являлась одной из самых популярных аппаратных систем защиты ПО.

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

Аппаратная часть это электронный ключик в виде USB-брелка, pcmcia-карты, LTP-девайса или вообще внутренней PCI-карты.

Для этого необходимо иметь возможность изменять поля структуры.

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



Перехват и эмуляция, как уже отмечалось, идея перехвата состоит в перезаписи обработчиков.

Популярный юридический справочник КонсультантПлюс также защищает доступ к данным с помощью электронных ключиков.

Аппаратная часть это электронный ключик в виде USB-брелка, pcmcia-карты, LTP-девайса или вообще внутренней PCI-карты.

Это общая информация о пакете (тип, флаги, прочее) и, конечно, буферы.

Код HookDispatch if (idlTail- putLength) idlTail- InputBuffer ExAllocatePool(NonPagedPool, idlTail- putLength RtlCopyMemory(idlTail- InputBuffer, Irp- stemBuffer, idlTail- putLength if (IoSL- MajorFunction IRP_MJ_device_control) Status pHookedDriverDispatchIRP_MJ_device_control( DeviceObject, Irp if (idlTail- IrpData.

Так как система защиты по каким-либо причинам может закончить свою работу раньше нашего драйвера, то чтобы избежать краха системы из-за неверных указателей, обработаем это событие в функции HookUnload: void HookUnload(pdriver_object DrvObj) UnhookDevice gDriverUnload(DrvObj Здесь происходит восстановление полей структуры driver_object, и.


Комментариев нет:

Отправить комментарий