Трейдер Александр Романов 05.07.2012 в своей почтовой рассылке сообщил следующее: “Высылаю Доступ к Советнику «Diamond Forex»… Многомесячное тестирование и открытые счета показали отличную стабильную доходность: около 10% в месяц!”. Полагаю, что некоторым читателям моего Блога будет интересно прочитать несколько слов о новом советнике «Diamond Forex» и его защите.
Начну с первой позиции. Александр Романов от лица команды разработчиков (http://forex-lesson.ru/sovetniki/diamond.html) на страницах своего сайта сообщает следующее: «Наша команда посвятила этому советнику более года, и только сейчас я с полной уверенностью могу заявить Вам, что после долгой, упорной и тщательной гравировки нашей идеи мы получили не просто драгоценный советник, а превосходное и идеальное ювелирное изделие – БРИЛЛИАНТ. Средняя доходность в месяц от 10 до 20% , но риск потерять все средства снижен до минимума!… Чтобы создать этого советника нам пришлось полностью изменить взгляд на рынок форекс и на анализ рынка. Алмаз и есть идея, которая нам не давала успокоиться, так как мы понимали, что мы получим после долгой гравировки нашей идеи. Советник Diamond противоречит многим постулатам рынка форекс, и именно это его делает одним из самых СТАБИЛЬНЫХ советников.».
Технические моменты работы советника. Информацию даю так, как она представлена на сайте разработчика. Оставил все важные положения по технике, но опустил рекламную составляющую:

  1. Советник не требует специальных знаний рынка, а уже сегодня Вы сможете зарабатывать с ним.
  2. Как все наши советники – для установки его себе, Вам достаточно скачать один файл и установить его. Разберется даже ребенок.
  3. Основным преимуществом данного советника является минимизирование рисков потерять средства и отсутствие замка.
  4. Работает на часовом таймфрейме – H1
  5. Минимальный депозит 500$.
  6. В терминал внедрены настройки для депозитов различной величины от 500$ до 10000$.
  7. Diamond советник идеально подходит для торговли во флете или боковом движении.
  8. Работает на одной валютной паре GBP/USD, но можно работать и на других парах после полного изучения советника.
  9. Советник распознает свои позиции, что позволяет параллельно торговать в ручном режиме, не влияя на работу советника.
  10. Советник работает круглые сутки, но присутствует механизм регулировки по времени.

Важных момента три: а) таймфрейм H1, б) пара GBP/USD, в) минимальный депозит 500$.

Дополнительный четвертый момент и о нем несколько слов особо. Программа позиционируется как бесплатная, но для получения ключа регистрации нужно зарегистрироваться по реферальной ссылке разработчика, после чего предоставляется ключ к счету. Меня профессионально интересуют системы защиты торговых программ, поэтому мне было интересно взглянуть и на эту составляющую. Советник можно скачать по ссылке http://forex-lesson.ru/InstaDiamond.exe. После установки, кроме MT4 и дополнительных файлов индикаторов, получаем два файла Diamond.ex4 и файл библиотеки protect.dll. Относительно ex4 все понятно, а как узнать, сколько файлов библиотек и какие входят в комплектацию?
Элементарная проверка на “вшивость”. Смотрим информацию о заголовке, воспользовавшись бесплатной версией ex4_to_mq4_demo.exe (Demo version Visit https://purebeam.biz to get FULL version. You can download demo version of EX4-TO-MQ4 Decompiler 4.0.427 with limitation: recover only first function). Убеждаемся еще раз, что надежно защитить ex4 файл от декомпиляции нельзя! Демо дает только одну функцию, но и ее много. Достаточная информация в этих строках.

/*
Generated by EX4-TO-MQ4 decompiler DEMO V4.0.416.1b [-]
only first function is recovered,
visit website to get FULL decompiler version
EX4 ID : 7862CD1F96C0BDD2E44B5A95221D83A9
Website: https://purebeam.biz
E-mail : purebeam@gmail.com
*/
#property copyright «….»
#property link «http://…..”

#import «protect.dll»
int CheckCode598(int a0, int a1);
int TradeSign123(int a0, int a1, double a2, double a3, double a4, double a5, double a6);
#import
Видно, что библиотека подключена всего одна и в ней всего две функции. Логично предположить, что CheckCode598 возвращает код проверки, получив два аргумента int a0, int a1 и, что дополнительно проверка есть и в TradeSign123 (это совершенно стандартный подход), в которую передаются два аргумента int a0, int a1. Замечу, что это только предположение, так как код советника я не раскапывал. Меня интересовало только следующее – могу ли я получить код регистрации за 10-15 минут или нет. Очевидно, что программа без функции TradeSign123 работать не может, а TradeSign123 защищена (скорее всего). Для вывоза функции CheckCode598 из библиотеки protect.dll есть вся необходимая информация. Для обращения к библиотеке основную часть можно написать на Delphi. На что следует обратить внимание.
1. Напомню, что в паскале есть не только тип integer для целых чисел, но и тип длинное целое longint. Именно этот тип покрывает диапазон от2147483648 до 2147483647, который соответствует типу int в MQL. Используя integer, выйдите за границы типа, но не сможете проверить весь диапазон.
2. Мне могут задать такой вопрос, а как проверять, что возвращает CheckCode598, если мы не знаем, что искать. Возможны варианты, но общая логика такая. Функция возвращает одно правильное, с точки зрения контроля, значение и все остальные неправильные. Запустите советник на том счете, для которого хотим получить регкод. Номер счета известен – первый аргумент, вводим код регистрации SecurityCode от балды, например, 1234. Это второй аргумент. Обратились к функции и получили, например, ответ 5. Номер счета известен – первый аргумент, вводим код регистрации SecurityCode от балды, например, 789. Это второй аргумент. Обратились к функции и получили, например, ответ 5. Итого, две неверных регистрации и два возврата 5. Логично предположить, что верное значение будет единственным и отличаться от 5. То есть записать процедуру так, как представлено ниже.
procedure TForm1.BitBtn1Click(Sender: TObject);
Label l1;
var n1,n2,nomer,reg:longint;
rez:integer;
begin
nomer:=StrToInt(Edit3.Text);
n1:=StrToInt(Edit1.Text);
n2:=StrToInt(Edit2.Text);
label1.Caption:=’???’;
for reg:=n1 to n2 do begin
rez:=CheckCode598(nomer,reg); label5.Caption:=IntToStr(rez);
if rez<>5 then begin label1.Caption:=’Код регистрации=’+IntToStr(reg);
goto l1; end; end; label1.Caption:=’Код регистрации в интервале N1-N2 не найден’;
l1:; end;
Итого, код был найден за несколько секунд работы программы. Например,
Номер счета Код регистрации
65211096 -1080188743
111111 612037409
12345 -409290154


Подвожу итоги:

1. Бриллиант ли советник или нет – пока не знаю, будущее покажет. Если говорить о защите, то она явно не бриллиант и место ей на помойной куче.
2. Я не собираюсь мешать команде Романова продвигать очередной Грааль, поэтому не ждите от меня ключеделку или коды регистрации. Замечу, что как подключается библиотека, я не привожу (эта информация доступна, но нужно приложить некоторые усилия и найти). Так же мне известно, что неверный код это не 5, а 5 поставил только для примера. Кроме того, названия двух функций в библиотеке я тоже слегка изменил.
3. Мне известно, что если воспользоваться аппаратным ключом HASP HL (от $15) или программным HASP SL (60 руб. или 220 руб.) с выдаваемой лицензией, то описанный способ взлома не проходит, так как без ключа с лицензией нельзя запустить dll библиотеку. Естественно, что нельзя подобрать ключ регистрации, а если бы даже и узнал каким-то образом без запуска библиотеки, то пользы мне от него, как собаке пятая лапа. Без лицензии советник запустить нельзя, а лицензия в ключе защиты HASP!
Не буду рассуждать на тему того, что лучше – заплатить 60 рублей за копию и понести накладные расходы на защиту (плюс 2000 руб. одноразово за ее установку на dll) и получить надежно защищенную программу или сэкономить, теряя потенциальную прибыль, которая никогда не станет реализованной. Каждый решает для себя сам. Замечу только, что сейчас я работаю над установкой очередной HASP защиты на новый советник. Заказы на установку принимают, но, учитывая рост числа желающих, стоимость будет повышена в ближайшее время.
Сайт в сети Интернет эффективный инструмент, чтобы донести информацию до широкого круга людей. Хостинг провайдер позволяет разместить сайт или сайты на его серверах, для запуска программ, в том числе советников для торговли на Форекс, можно заказать услугу аренды сервера (VPS) с доступом к его ресурсам по протоколу RDP.

Ананченко Игорь Викторович Контактная информация Моб. телефон: +79213201586 ICQ: 361916132 Веб-сайт: http://anantchenko.ru E-mail: igor@anantchenko.ru Вконтакте: http://vkontakte.ru/id8574436 https://mcp.microsoft.com/authenticate/validatemcp.aspx Transcript ID 793398 and the Access Code 9213201586 Microsoft Certification Status: Microsoft Certified IT Professional, Microsoft Certified Technology Specialist, Microsoft Certified Desktop Support Technician, Microsoft Certified Professional, Microsoft Certified Trainer