Защита советника

В принципе, взломать можно все. Даже Майкрософт с армией профессиональных программистов не может защитить свой продукт от взлома. Будет ли взломана Ваша программа, зависит от соотношении ее ценности и затрат на взлом (стоимость, время).
Если проще взломать программу чем купить, и она того стоит, то она будет взломана.

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

Принцип работы почти всех способов защиты – это сравнение двух параметров (пароль, время, номер счета и тд.). Одно из значений стараются запрятать в какое-то потаенное место, сохраняется в реестре windows, скрытом файле или в самом советнике. В процессе проверки сравнивается со вторым (пароль, счет и тд.) и если значение совпадают, разрешается работа программы.

Примеры некоторых из простых способов защиты программ написанных на MQL4.

int start()
 {
  if(IsDemo() == false)// советник работает только на демо счете
   {
    Alert("Реальный счет... советник не работает");
    return(0);
   }
  if(AccountNumber() != 12345)  // привязка советника к конкретному торговому счету
   {
    Alert("Неверный счет... советник не работает");
    return(0);
   }
  if(AccountName() != "Ivanov")  // проверка на кого зарегистрирован счет
   {
    Alert("Неверный пользователь счета... советник не работает");
    return(0);
   }
  if(AccountCompany() != "Alpari NZ Limited")  // привязка советника к конкретному брокеру
   {
    Alert("Не тот брокер... советник не работает");
    return(0);
   }
  if(TimeCurrent() > StrToTime("2014.8.12 17:35"))  // ограничение роботы советника по времени
   {
    Alert("Срок роботы советника истек... советник не работает");
    return(0);
   }
 }

Даже такие простые способы могут быть использованы в некоторых случаях. По крайней мере человек не разбирающийся в программировании и не имея нужного ПО, взломать не сможет.

Файл советника с расширением mq4 – это обычный текстовый файл, его можно создавать, открывать, редактировать и сохранять в обычном «блокноте».
Встроенный в терминал МТ4 редактор MetaEditor по сути тот же блокнот, только с подсветкой функций и зарезервированных слов языка MQL4. Язык программирования MQL4 создан для удобства человека, что бы программисту было проще писать код программы, машина этот код не понимает. После компиляции (кнопка компилировать) создается исполняющий файл с расширением ex4, код переводится с языка понятного человеку на язык понятный машине. Открыв этот файл, увидим сплошные «казяблики».

Но строки при компиляции не изменяются и среди «казябликов» можно найти Вашу строку – пароль. Что бы спрятать строку с паролем ее можно разбить на части, сохранять в разных местах программы а перед проверкой собирать. Строку также можно зашифровать.

Компьютер знает буквы под числовыми значениями. Например, а = 97, А = 65, b = 98, B = 66 и тд., поэтому строку можно собрать из символов:

string pass = CharToStr(104) + CharToStr(75) + CharToStr(83) + CharToStr(99) + CharToStr(54); // пароль -hKSc6
string N_Ak = CharToStr(49) + CharToStr(50) + CharToStr(51) + CharToStr(52) + CharToStr(53);  // номер счета - 12345
string Name = CharToStr(73) + CharToStr(118) + CharToStr(97) + CharToStr(110) + CharToStr(111) ) + CharToStr(118); // имя - Ivanov

Более сложную систему защиты, которая заставит взломщика попотеть, можно сделать во внешней библиотеке, написанной на другом языке программирования.

Глобальные переменные и «светофор» приправленные Мартингейлом — https://forexlab.ru/mql-variables-with-martingale/

You May Also Like