Май 19

Защита торговых советников ключами HASP SL

Рассматриваемые темы: 1) защитите программу для торговли на Forex ключом HASP SL, 2) моя новая статья для Магия ПК под рабочим названием “Защита программного обеспечения с помощью HASP SL”.
Начинаю с делового предложения, которое таково:

Надежная защита торговых программ-советников (ex4+dll) c использованием аппаратных и программных ключей. Установка защиты 2000 WMR (моя работа). Накладные расходы для покупателя к стоимости советника: Программный ключ привязки к компьютеру (230 WMR) или Универсальный аппаратный ключ, позволяющий работать на любом компьютере (750 WMR, без учета доставки ключа клиенту).

Пример защищенного советника Crisis доступен по адресу www.mctrewards.ru/files/crisis-com-demo.zip. Реализуем и более жесткий вариант защиты, чем в представленном примере. Возможна установка навесной защиты на уже готовую dll, в этом случае исходный код dll не нужен, достаточно самой готовой dll библиотеки. Качество защиты высокое и не надо беспокоиться о том, что передаете свои секреты (исходники) человеку, устанавливающему защиту (т.е. мне).

Перехожу ко второй теме. Достаточно много времени потратил на подготовку новой статья для журнала Магия ПК. Рабочее название статьи “Защита программного обеспечения с помощью HASP SL”. Ниже начало статьи. В следующих постах будет продолжение.

Защита программного обеспечения с помощью HASP SL

Тема защиты программного обеспечения (ПО) от несанкционированного использования актуальна всегда, так как всегда находятся желающие воспользоваться результатами чужого труда бесплатно. Пиратство приносит значительные убытки разработчикам программного обеспечения. Когда человек, разрабатывающий программы, видит, что написанные им приложения распространяются по сети Интернет без всякой оплаты, вместо того, чтобы продаваться, желание программировать новые программы полностью пропадает.
Защита прав интеллектуальной собственности предусматривает ответственность пиратов за незаконное копирование, распространение и использование программного обеспечения. Это хорошо, но прежде пирата необходимо поймать и доказать, что закон нарушил именно он. Поэтому только юридической защитой дело не ограничивается, а используются дополнительно программные и программно-аппаратные методы защиты программного обеспечения. Простейшая техническая защита программного обеспечения предусматривает ввод регистрационного кода, который разработчик программного обеспечения сообщает пользователю. Ниже привожу небольшой фрагмент из декомпилированной (взломанной) программы для торговли на рынке Форекс. Декомпилированный вариант, полученный в результате обработки исходного ex4 файла, нашел на одном из форумов по Форекс. Видно, что информация о копирайте злоумышленников, выложивших восстановленный исходник в сеть Интернет, не остановила

#property copyright «© *******.ru»
….
int init() {
….
if (!(IsDemo() || IsTesting() || IsOptimization())) {
if (6.0 * (1.0 * (2.0 * (8.0 * AccountNumber() + 678.0) + 16.0)) != Key) {
ls_0 = «Для торговли на реальном счете нужен лицензионный ключ.»; ls_8 = «Вы можете получить ключ на сайте www.********.ru»; Print(ls_0); Print(ls_8); MessageBox(StringConcatenate(ls_0, «\n», ls_8, «\n»), «Ошибка», MB_ICONHAND); Sleep(93700000); } }

…. return (0); }


В функции init() сравнивается значение вычисленного производного значения от номера счета AccountNumber() и полученного ранее от продавца ключа (переменная Key), который был передан покупателю. Если значения равны, то функция возвращает ноль и программа работает в штатном режиме. В случае ошибки программа засыпает “навечно” – Sleep(93700000). Для разработки такой защиты нужно совсем немного времени, так же как и на что, чтобы ее взломать. (Ремарка. Хотя я взял для иллюстрации реальный пример, но некоторые числа в функции, уважая и ценя чужой труд, изменил. Поэтому, выполнив вычисления по формуле, код регистрации для данного советника Вы не получите.)
Еще один чуть более сложный для реализации и взлома вариант. Выносим часть функционала программы, в том числе и функцию проверки ключа, в отдельную dll библиотеку, исходный код которой может быть примерно такой:

library xyz; {uses SysUtils, Classes ; } {$R *.res}

function key(a0:integer;a1:integer;a2:integer;a3:integer;a4:integer;

a5:integer;a6:integer):integer;
stdcall; begin if (a2=a1*7-784351) then key:=0 else key:=1;
end;
function price1(a0:integer;a1:integer;a2:integer;a3:integer;a4:integer;

a5:integer;a6:integer):integer;
stdcall; begin …… end;

exports key,price1,btp1,stp1,maxorders; begin end.


Скомпилировав исходник, реализованный средствами Delphi, получаем библиотеку xyz.dll и хранящиеся в ней функции key,price1,btp1,stp1,maxorders. Функция key отвечает за проверку, остальные содержат части функционала программы. Другими словами, без файла xyz.dll программа работать не будет. Но, что мешает злоумышленнику распространять файл библиотеку xyz.dll вместе с вызывающим ее скомпилированным кодом программы ex4? Ничего не мешает! Для подбора кода регистрации злоумышленнику потребуется больше времени, так как нужно корректно вызвать функцию из библиотеки и подобрать нужный вариант ключа для заданного номера счета.
На основе сказанного можно сделать вывод, что сама библиотека dll так же нуждается в защите. Один из вариантов выполнить шифрование библиотеки и встроить в нее код привязки к некому аппаратному устройству. Можно воспользоваться готовым решением, от какого либо производителя аппаратных средств защиты. Например, использовать ключ аппаратный HASP HL от фирмы SafeNet.

* * *

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

На этом на сегодня все, читайте продолжение статьи в завтрашней публикации.

Поделитесь статьей со своими друзьями
Общайтесь со мной:
comments: Closed

Comments are closed.