Как привязать советник к номеру счета

Программирование прибыли: от азов к секретам мастерства. Читайте, спрашивайте, делитесь опытом.
Бонус за сообщение 0.5$
Ответственный Модератор - Haos

Как привязать советник к номеру счета

Сообщение Kalkin » 21 апр 2016, 21:35

Весьма распространенная ситуация: программист написал свое великое творение и не хочет, чтобы его программный продукт бесконтрольно распространялся. Как иметь возможность передать советник конкретному человеку, но чтобы больше никто не мог им воспользоваться? Существует несколько способов защиты программного кода от несанкционированного использования.
1. Привязка советника к конкретному номеру счета. Наиболее простой способ. Но до недавнего времени был абсолютно неэффективен ввиду простоты декомпиляции исполняемых файлов. Однако последние билды MQL4 защищены намного лучше и в большинстве случаев такой защиты будет вполне достаточно. Достоинство метода - советник будет работать только у того, для кого он был скомпилирован. Недостаток - для каждого клиента необходимо перекомпилировать советник заново.
2. Генерация серийных номеров. Метод заключается в том, чтобы в настройки советника внести поле для ввода серийного номера, при этом внутри самого советника присутствует функция, проверяющая введенный серийный номер на валидность. Достоинство метода - единый экземпляр советника для любого пользователя. Недостаток - утечка любого из серийных номеров приведет к потере контроля за распространением советника.
3. Вынос привязки к номеру счета в динамически загружаемую библиотеку (DLL). В DLL также обычно выносится основная часть алгоритма работы. Более трудный способ на этапе создания советника, так как необходимо иметь немного больше мастерства программирования, чем начальный уровень. Но тем не менее, даже такая привязка взламывается при помощи дизассемблера и HEX-редактора. Достоинства - обход привязки требует более высокой квалификации программиста. Недостаток - в связи с усилением защиты от декомпиляции исполняемых файлов Метатрейдера, метод практически потерял свою актуальность.
4. Защита с использованием онлайн-сервиса и электронных криптографических ключей. Наиболее надежный метод, но мы его даже рассматривать не будем, так как он используется исключительно профессиональными распространителями программных продуктов и требует дополнительных вложений на техническую поддержку своего сервиса.

Рассмотрим первый вариант защиты советника - привязка к конкретному торговому счету.
Получить информацию о текущем счете в MQL4 можно двумя способами.
1. Как известно, логин для подключения счета и сам номер счета одинаковые. Логин представляет собой целочисленное значение. Для получения целочисленных значений соответствующих свойств счета есть функция
Код: выделить все
long  AccountInfoInteger(
   int  property_id      // идентификатор свойства
   );

Если в параметр функции передать значение ACCOUNT_LOGIN, то она вернет нам текущий логин:
Код: выделить все
// получить логин (номер счета) в переменную Number:
int Number = AccountInfoInteger(ACCOUNT_LOGIN);


2.Второй способ - воспользоваться функцией AccountNumber(), которая просто возвращает номер счета, на котором советник в данный момент работает:
Код: выделить все
// получить номер счета в переменную Number:
int Number = AccountNumber();


Как теперь эти знания использовать? Нужно в начале работы советника проверить, соответствует ли номер счета, на котором работает советник, изначально заданному, и если не соответствует, то прекратить работу. Допустим, хотим ограничить выполнение советника исключительно на счете номер 1234567. В начало функции OnTick() советника вставляем соответствующий блок:
Код: выделить все
void OnTick()
{
   int Number = AccountNumber(); // получить номер счета
   if (Number  != 1234567)       // сравнить его с заданным, и если не равен,
   {
      Comment("Работа на счете ",Number," запрещена!");   // вывести комментарий о запрете работы
      return;     // принудительно завершить работу
   }
   // ... дальнейший код советника
}
Аватар пользователя
Kalkin
 
Сообщений: 1589
Зарегистрирован: 05 мар 2015, 06:51
Средств на руках: 108.80 Доллар
Награды: 2
Ветеран I (1) Медаль за научный вклад (1)
Группа: Базовая
Благодарил (а): 633 раз.
Поблагодарили: 1190 раз.
Ace Register Votive

Как привязать советник к номеру счета

Сообщение ВЯЧЕСЛАВПЕТРОВ » 29 янв 2017, 15:05

Интересная тема, а можно еще о методах зашиты советника от взлома.
Аватар пользователя
ВЯЧЕСЛАВПЕТРОВ
 
Сообщений: 1522
Зарегистрирован: 06 сен 2016, 21:28
Средств на руках: 90.40 Доллар
Награды: 2
Ветеран I (1) Медаль за эрудицию (1)
Группа: Базовая
Благодарил (а): 3574 раз.
Поблагодарили: 434 раз.
Автор Вячеслав Петров. Возьму капитал или счет в управление. В лс.
Мониторинг трех счетной системы. Первый.Второй. Третий.
Четвертый.

Re: Как привязать советник к номеру счета

Сообщение Рэндом » 30 янв 2017, 06:49

А конкретные вопросы есть?
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3171 раз.
Каждый заблуждается в меру своих возможностей.

Как привязать советник к номеру счета

Сообщение Kalkin » 30 янв 2017, 14:11

ВЯЧЕСЛАВПЕТРОВ писал(а):Интересная тема, а можно еще о методах зашиты советника от взлома.

Кто задастся целью взломать - взломает. Дело только во времени и средствах. В настоящее время советники из раздела Маркета от Metaquotes Software Corp. (разработчиков Метатрейдера) вполне надежны, так как они жестко привязываются к компьютеру пользователя и проходят активацию. Мне неизвестны случаи взлома этих советников, так как затраты на взлом будут такие, что проще купить. Раньше - да, можно было взять практически любой советник, декомпилировать его и убрать защиту. Если защита выносилаcь в DLL - тоже проблем особо не было, так как дизассемблер все эти библиотеки читает, и после просмотра кода можно было понять, где изменить команды условного перехода, чтобы результат проверки защиты всегда был положительный. Каюсь, было дело - взламывал я такие защиты...
Вердикт такой: если охота продать свое творение, то сервис Маркета - самое то.
Аватар пользователя
Kalkin
 
Сообщений: 1589
Зарегистрирован: 05 мар 2015, 06:51
Средств на руках: 108.80 Доллар
Награды: 2
Ветеран I (1) Медаль за научный вклад (1)
Группа: Базовая
Благодарил (а): 633 раз.
Поблагодарили: 1190 раз.
Ace Register Votive

Как привязать советник к номеру счета

Сообщение ВЯЧЕСЛАВПЕТРОВ » 30 янв 2017, 14:22

Kalkin писал(а):
ВЯЧЕСЛАВПЕТРОВ писал(а):Интересная тема, а можно еще о методах зашиты советника от взлома.

Кто задастся целью взломать - взломает. Дело только во времени и средствах. В настоящее время советники из раздела Маркета от Metaquotes Software Corp. (разработчиков Метатрейдера) вполне надежны, так как они жестко привязываются к компьютеру пользователя и проходят активацию. Мне неизвестны случаи взлома этих советников, так как затраты на взлом будут такие, что проще купить. Раньше - да, можно было взять практически любой советник, декомпилировать его и убрать защиту. Если защита выносилаcь в DLL - тоже проблем особо не было, так как дизассемблер все эти библиотеки читает, и после просмотра кода можно было понять, где изменить команды условного перехода, чтобы результат проверки защиты всегда был положительный. Каюсь, было дело - взламывал я такие защиты...
Вердикт такой: если охота продать свое творение, то сервис Маркета - самое то.

Спасибо я понял что кто хочет тот сделает. Мне просто было интересно поподробнее узнать о других методах защиты описанных в статье выше. Метод со счетом мне понравился можно советника кому нибуть дать и потом не сразу найти в интернете в свободном доступе.
И об общем положении дел в этой сфере.
Для того чтобы в марките продать требуются наверное какие то условия.
Аватар пользователя
ВЯЧЕСЛАВПЕТРОВ
 
Сообщений: 1522
Зарегистрирован: 06 сен 2016, 21:28
Средств на руках: 90.40 Доллар
Награды: 2
Ветеран I (1) Медаль за эрудицию (1)
Группа: Базовая
Благодарил (а): 3574 раз.
Поблагодарили: 434 раз.
Автор Вячеслав Петров. Возьму капитал или счет в управление. В лс.
Мониторинг трех счетной системы. Первый.Второй. Третий.
Четвертый.

Re: Как привязать советник к номеру счета

Сообщение Рэндом » 31 янв 2017, 06:09

Там зарегистрироваться просто. Подробностей правда уже не помню. У меня там 2 советника выставлены. В общем с маркетом никаких сложностей. Скажу сразу продаж никаких.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3171 раз.
Каждый заблуждается в меру своих возможностей.

Как привязать советник к номеру счета

Сообщение ВЯЧЕСЛАВПЕТРОВ » 31 янв 2017, 16:53

Рэндом писал(а):Там зарегистрироваться просто. Подробностей правда уже не помню. У меня там 2 советника выставлены. В общем с маркетом никаких сложностей. Скажу сразу продаж никаких.

Да мне тоже кажется что продавать на маркете бестолковое занятие. Нужно будет искать свои пути. Вот я и думаю как сделать защиту относительно надежной и простой . Мне так кажется профессионалу легче сломать робота и переписать алгоритм под своим именем чем пользоваться ломаным.
Аватар пользователя
ВЯЧЕСЛАВПЕТРОВ
 
Сообщений: 1522
Зарегистрирован: 06 сен 2016, 21:28
Средств на руках: 90.40 Доллар
Награды: 2
Ветеран I (1) Медаль за эрудицию (1)
Группа: Базовая
Благодарил (а): 3574 раз.
Поблагодарили: 434 раз.
Автор Вячеслав Петров. Возьму капитал или счет в управление. В лс.
Мониторинг трех счетной системы. Первый.Второй. Третий.
Четвертый.

Как привязать советник к номеру счета

Сообщение Money_Maker » 01 фев 2017, 08:08

Спасибо за инфо!
Последний раз редактировалось Рэндом 01 фев 2017, 08:12, всего редактировалось 1 раз.
Причина: .
Аватар пользователя
Money_Maker
 
Сообщений: 4
Зарегистрирован: 01 фев 2017, 06:28
Средств на руках: 0.00 Доллар
Группа: Новые пользователи
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Как привязать советник к номеру счета

Сообщение Рэндом » 01 фев 2017, 08:11

Money_Maker почитайте правила форума.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3171 раз.
Каждый заблуждается в меру своих возможностей.

Как привязать советник к номеру счета

Сообщение Kalkin » 02 фев 2017, 06:38

ВЯЧЕСЛАВПЕТРОВ писал(а):
Рэндом писал(а):Там зарегистрироваться просто. Подробностей правда уже не помню. У меня там 2 советника выставлены. В общем с маркетом никаких сложностей. Скажу сразу продаж никаких.

Да мне тоже кажется что продавать на маркете бестолковое занятие. Нужно будет искать свои пути. Вот я и думаю как сделать защиту относительно надежной и простой . Мне так кажется профессионалу легче сломать робота и переписать алгоритм под своим именем чем пользоваться ломаным.

Как известно, реклама - двигатель торговли. Для продаж на Маркете действуют те же законы. Если просто кинуть советник и ждать, что кто-то купит, то можно очень долго ждать :-):
Если самому распространять, то в подавляющем большинстве случаев достаточно метода, который я описАл. Может быть, я бы добавил еще функцию шифрования номера счета, чтобы его нельзя было найти в HEX-редакторе. Сейчас не распространены декомпиляторы для последних версий советников, как это было несколько лет назад, поэтому взломать код просто так не получится. К тому же самых разнообразных роботов в сети столько, что любой, даже хороший советник просто потеряется в этой куче. А учитывая, что советник нужно оптимизировать и еще знать, на каких парах и при каких условиях он должен работать, то потенциальных потребителей "халявы" становится еще меньше.
Аватар пользователя
Kalkin
 
Сообщений: 1589
Зарегистрирован: 05 мар 2015, 06:51
Средств на руках: 108.80 Доллар
Награды: 2
Ветеран I (1) Медаль за научный вклад (1)
Группа: Базовая
Благодарил (а): 633 раз.
Поблагодарили: 1190 раз.
Ace Register Votive


Вернуться в MQL – теория и практика

Кто сейчас на форуме?

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34

Права доступа к форуму

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения