Сколько стоит установить защиту и обслуживание? Подготовительный этап включает в себя подготовку ex4 и dll файла на основе предоставленного заказчиком mql файла.
Переход от варианта: исходный файл на mql к связке ex4 + dll будет стоить столько, сколько за это берет программист. Так сколько конкретно? Диапазон цен от 300 руб. до 5000 руб. Зависит от срочности, дополнительного функционала, добавляемого к dll, и пр. Кто-то из альтруистских побуждений может сделать ex4 + dll полностью бесплатно. Еще один хороший вариант – изучить, как создавать dll самому. После этого можно делать себе полностью бесплатно, а другим за вознаграждение.
Навешивание защищенного кокона на dll. Обычно дополнительно платить не надо, если заказывали подготовительный этап. Если дали готовую ex4 + dll, то работу оговариваете с установщиком защиты (можно назвать этого человека программистом, но программирования на этом этапе, как такового нет) отдельно. Что могут сделать и как.
1) Клиент покупает себе MASTER с комплектом разработчика и монтирует его на своем компьютере, обеспечивая доступ удаленно к USB порту — установщик защиты все делает на стороне заказчика (базовый вариант).
2) Бюджетный вариант 1. Работает установщик защиты с сервером Фирмы, предоставляем заказчику dll в “коконе”, остается только докупить ключи по 220 руб. у Фирмы.
3) Бюджетный вариант 2. Заказчик покупает 50 лицензий вместе MASTER ключом в комплекте разработчика. Обычно он просто дает деньги установщику защиты, а тот уже сам покупает пакет из 50 лицензий с вместе MASTER ключом в комплекте разработчика. Установщик настраивает, привязывает и предоставляет заказчику dll в “коконе” для данного комплекта. Часто установщик защиты берет себя возню по оффлайновой активации. Установщик получает файл с2v от покупателя (слепок, который ему прислал клиент), установщик генерирует v2c файл для покупателя и отсылает ему (обслуживание обычно стоит от 1 руб. за операцию). Установщик, как правило, берем на себя покупку следующих комплектов (на деньги заказчика) и оперативную смену “кокона” для нового комплекта (бесплатно). Альтернативный вариант. Заказчик монтирует у себя MASTER из комплекта. В удаленном режиме установщик защиты делает “кокон” для его dll, дальше заказчик сам работает с с2v — v2c и меняет “кокон” для новый партий (по полученной от установщика инструкции).
Какие есть альтернативы (на примере известных решений).
1) Получаем ex4 и используем защитник полученного кода (например, обработка программой ex4_protector или ее налогом). По такому пути пошли владельцы известных советников Vslive Trader 2.0, Auto-prolet 3.0 и другие. Используя последнюю версию программы ex4_to_mq4, злоумышленник без проблем получает исходный mql код. Не верите? Возьмите ex4_to_mq4_demo. В этом варианте программа успешно восстанавливает одну функцию. Если демо восстановило одну, то, что мешает не демо восстановить весь файл? Ничего! Полагаете, что злоумышленника задушит жаба покупать эту программу за $799? А Вам известно, что можно заказать декомпилировать один файл всего за 39 баксов? И создатель программы его декомпилирует! Такова структура ex4, как ее не накручивай. Хороша защита? Проехали!
2) Некоторые известные советники типа семейства Regressor 1.9 и 1.12 и им подобные комбинируют ex4 и dll.
#import «Regressor_v12.dll»
int FIG_Signal(int a0, int a1, double a2, double a3);
#import
int KEY = 3642959;
int acc_num = AccountNumber();
….
if (FIG_Signal(acc_num, KEY, g_imacd_480, g_imacd_488) == 3) {
Print(«Expert key is not activate»);
Comment(» Expert key is not activate»);
return (0);
….
if (f0_3() && FIG_Signal(acc_num, KEY, g_imacd_480, g_imacd_488) == 1 && gi_520 == FALSE) {
…
Видно, что библиотеку просто так злоумышленнику после получения исходника не выкинуть, так как на нее завязана часть функционала. Злоумышленник, однако, знает, что код регистрации KEY 3642959 соответствует номеру аккаунта 122345. А что мешает злоумышленнику внести такое изменение в код и распространять восстановленный исходник вместе с библиотекой?
#import «Regressor_v12.dll»
int FIG_Signal(int a0, int a1, double a2, double a3);
#import
int KEY = 3642959;
int acc_num = 122345;
….
if (FIG_Signal(acc_num, KEY, g_imacd_480, g_imacd_488) == 3) {
Print(«Expert key is not activate»);
Comment(» Expert key is not activate»);
return (0);
….
Ничего не мешает! Защиты нет, работает на любом счете. Хороша защита? Проехали!
3) А вот советник из жарких Казахских степей Baran 2.0. Создатели сделали сложную библиотеку проверки лицензии и продают программу за 500 баксов, а так же сдают в аренду за 7 баксов в сутки. Для защиты раздули ex4 до монстроразмеров, добавив большие функции пустышки, надеясь, что декомпилятор не справится. В общем, используем обфускацию по-научному или запутывание кода, если по-русски.
Посмотрев на код
#import «LOSS.dll»
int fu(int a0, int a1, int a2);
#import
int xxx;…
int init() {…
if (xxx == 1) gi_unused_356 = StrToDouble(asd());
else
if (fu(AccountNumber(), 1, TimeMonth(TimeCurrent())) == 12345) gi_348 = TRUE;
gd_264 = MarketInfo(Symbol(), MODE_SPREAD) * Point;
return (0);} … string asd() {
int li_8; int li_0 = 21; int li_4 = 23; li_8 = li_0 + li_4 + li_0 + li_4 + li_8; И так далее мегабайта 3-4
return («»);
Злоумышленник видит, что а) переменной xxx ничего не присвоено, значит по умолчанию 0, а раз нет изменений, то равно 1 никогда не будет. Убрали монстра или оставили — дело вкуса, он все равно не работает. б) А функция fu — только проверка лицензии. Или злоумышленник пишет dll, которая, при любом вызове fu, возвращает 12345 и заменяет оригинал или правит mql код. Исправленный код:
int init() { … gi_348 = TRUE;
return (0); }
Трудное ли убрать лишнее, имея исходник? Архисложная задача для незнающего MQL человека, а если знает чуток, то ничего сложного. Хороша защита? Проехали!
4) Написали программу aivserver-profit, которая из dll проверяет наличие лицензии на сервере 89.163.94.95, обращаясь удаленно и постоянно. Клиент, купивший программу, заходит крупным лотом. В это время у провайдера 89.163.94.95 летит канал и сервер недоступен 70 минут. Советник ничего не делает. Клиент сначала ловит “лося”, потом, родив ежика, вопит на весь Интернет о том, как он слился. Хороша защита? Проехали!
Такие защиты для программ под MT4 сегодня в моде. Защите на HASP SL/HL совершенно все равно декомпилирован ex4 или нет, так как весь важный функционал в dll (вариант 1, не проходит). Важный функционал советника в dll, но вариант 2 тоже не проходит, т.к. на другом компьютере защита без ключа HASP не запустится. Вариант 3 – если настолько глупы, что не перенесли критически важную часть кода в dll и dll’ка только для красоты, то HASP SL/HL Вам не поможет, т.к. он должен защищать важный код, а не пустышку, которую можно вырезать из восстановленного ex4 в mql.
Кому не подходит защита HASP SL/HL
1) У Вас дешевая программа и Вы не хотите нести накладные расходы на ее защиту.
2) Вы очень экономны и понимаете, что вашу программу могут купить за 500 баксов 5 человек и не взломать, а взломают, может быть потом. И плевать Вам на упущенную выгоду, что могли бы продать еще копий с десяток другой и продавать постоянно, если бы потратили на защиту баксов 300. Ведь тратить надо на защиту до продаж, а деньги эти свои, а не полученная прибыль (а вдруг вашу чудо модификацию Илана вообще не купят, а деньги свои потрачены).
3) Вы очень умны и экономны. Разобраться, как заказать установку и эксплуатировать – это примитив. Если описанный алгоритм титану мысли сразу не понятен, то и пытаться выяснять его не надо. Диагноз – эта защита разводка лохов, мог бы поставить все сам, но, это развод. Нанять же установщика защиты и человека на саппорт экономность не позволяет, ведь им надо деньги платить.
Вопросы FAQ.
Можно ли дать пользователю лицензии так, чтобы он работал на нескольких компьютерах? Можно. Один компьютер – одна лицензия. Каждая лицензия за отдельную плату.
Можно ли запускать защищенную dll в виртуальной среде и не размножат ли виртуальные машины с программой? В защите стоит контроль исполнения в виртуальной среде. Его можно отключить, тогда программа привязывается к виртуальной машине. Перенести ее в другую вирутальную машину нельзя, но, запустить несколько копий существующей виртуалки можно. Отключать или нет выполнение в вирутальной среде – решать Вам самим.
А как с удаленным доступом по RDP? Настраиваемо. Можно указать, что будет работать только в варианте локального сеанса на компьютере или возможна поддержка RDP протокола.
* * *
Этим постом завершаю FAQ по установке защиты HASP SRM на программы для торговли на рынке Форекс. Успешная борьба с компьютерными пиратами дает значительное увеличение объема продаж. Однако, надо учитывать не только эту составляющую, а решать вопрос комплексно. Например, привлекать покупателей с помощью рекламы, в том числе контекстной, создать эффективный продающий сайт и т.д., но об этом в других выпусках. На этом на сегодня все.