Защита кода: Новый язык MQL4 (Build 600+) защита от декомпиляции и других методов взлома.

 

Здравствуйте,

Я прочитал о новом mql4 (Build 600+) и уже обновил свои советники, теперь у меня вопрос. Насколько надежна новая защита от взломщиков и других типов взлома исполняемых файлов и модификации кода. EX: шестнадцатеричное редактирование даты истечения срока действия, дампы памяти и т.д.. Насколько безопасно сейчас простое ограничение по времени(срок действия) на советнике? Как реализовать новые методы защиты, используя новый язык?

ex:

bool Expire=TimeCurrent()>StrToTime("2014.09.30 00:00");
    if( Expire ) {
                Print("Demo period has expired: 2014.09.30 00:00 -  Contact: investguy@gmail.com ");
                return(1);
        }  

Спасибо

 

Из того, что сказал Ренат (генеральный директор Metaquotes) :

  • Новые ex4 - это нативный код (как DLL) и больше не псевдокод. Поэтому их сложнее декомпилировать.
  • ex4 сжаты (или другая техника обфускации неизвестна), поэтому при декомпиляции их трудно понять.
  • ex4 для Market зашифрованы. Точная используемая техника не является общедоступной.

Я сообщаю эту информацию по памяти, поэтому надеюсь, что не ошибаюсь. Также я не проверял эту информацию на практике.

 
Спасибо за ответ, но он мало что добавил к моим знаниям. Возможна ли декомпиляция? Возможно ли это в ближайшем будущем? (есть ставки?)
 
investguy:
Спасибо за ответ, но он не сильно пополнил мои знания. Возможна ли декомпиляция? Возможно ли это в ближайшем будущем? (есть ставки?)

AFAIK, зашифрованный продукт не может быть декомпилирован. Сначала его нужно расшифровать. Продукт всегда можно декомпилировать. Но это вопрос затрат. Если декомпиляция старого ex4 обошлась вам в 10$, то для нового ex4, возможно, потребуется 1 000 000$ (просто чтобы что-то сказать). Вы поняли идею?

 
StrToTime("2014.09.30 00:00");

Чистую строку легко взломать. Попробуйте скомпилировать его и посмотреть, видна ли строка в ex4. Предполагается, что теперь она зашифрована (Build 6xx). Проверьте.

Также зачем вообще использовать строку? Используйте реальное 8-байтовое время даты.

#define  EXPIRATION D'2014.09.30 00:00'
 

Он зашифрован, но, к сожалению, переменные свойства все еще видны.

 
investguy: Он зашифрован, но, к сожалению, переменные свойства все еще видны.
Это не к сожалению, это специально. Если вы не можете прочитать копирайт в файле, значит, он не копирайт. Но строка даты не видна.
 
investguy:

Здравствуйте,

Я прочитал о новом mql4 (Build 600+) и уже обновил свои советники, теперь у меня вопрос. Насколько надежна новая защита от взломщиков и других типов взлома исполняемых файлов и модификации кода. EX: шестнадцатеричное редактирование даты истечения срока действия, дампы памяти и т.д.. Насколько безопасно сейчас простое ограничение по времени (срок действия) на советнике? Как реализовать новые методы защиты, используя новый язык?

ex:

Спасибо


AFAIK, до сих пор не существует возможности декомпилятора, работающего для .ex4, скомпилированного с Build 6xx.


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

if (condition...)

на

if (!condition

Или еще проще, NOP, который возвращает(1).

Чтобы возобновить, Декомпиляция сейчас невозможна.


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

 
yokinfx: Но что все еще возможно, так это дизассемблирование кода. И для любого человека, имеющего небольшие знания ассемблера, обратный инжиниринг вашего кода и его взлом будет довольно простым делом.
Это не должен быть машинный код, он должен быть зашифрован.
 
yokinfx:


AFAIK, до сих пор не существует возможности, чтобы декомпилятор, работающий в настоящее время для .ex4, скомпилированного с Build 6xx


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

на

Или еще проще, NOP, что return(1)

Повторюсь, декомпиляция сейчас невозможна.


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

Правда? Вы можете это доказать?
 
Поместите свой код в DLL. Это ответ, получивший награды со времен MQL2.