Цитата:
Сообщение от yava01
Вот подскажите, как закомпилировать советника, без возможности обратного действия, или это сказки?
|
Компиляция - это не шифрование, она не предназначена для сокрытия кода. Говорить "закомпилировать" не верно... у меня почему-то сразу ассоциации с "замучить"
На этом мои познания филологии заканчиваются
Если я не ошибаюсь, правильно говорить "компилировать", хотя в среде программистов не редко звучат "скомпилировать" и "откомпилировать", но я подозреваю, что это тоже не верно.
Суть компиляции заключается в преобразовании исходного текста программы, понятного человеку, в машинный код компьютера или псевдокод интерпретатора, "понятный" компьютеру. Также на этапе компиляции обычно происходит распределение сегментов данных, которые позже будут помещены в память, а также линковка - подсоединение внешних библиотек. Все это в значительной степени сокращает время выполнения программы (а значит повышает скорость) по сравнению с интерпретацией исходных текстов на ходу в момент исполнения.
Обычно, процесс компиляции - это двусторонний процесс, т. е. обратимый, с единственным ограничением: в компилированном коде не сохраняются имена переменных и функций, которые назначались программистом, поэтому в декомпилированном коде нередко можно встретить такое:
Код:
int func_0005() {
int var_int_0007 = 0;
int var_int_0008 = 0;
double var_double_0407 = 14;
....
}
(пример вымышленый)
Разбираться потом в таком коде - тоже не для слабонервных, обычно такой код требует рефакторинга, т. е. переписывания с переименованием переменных и функций, с назначением им смысловых имен.
Однако, на счет обратимости, не все так однозначно. В молодости я немного интересовался этим вопросом... Существуют так называемые трики: неправильные коды, которые при исполнении не нарушают порядок выполнения программы, но напрочь ломают процесс декомпиляции. Вставив в машинный код несколько таких триков, можно напрочь запутать декомпилятор, что в разы усложняет процесс взлома такой программы.
Это, что касается машинных кодов, что касается кода, получаемого после компиляции MQL4... Честно сказать, я до сих пор не знаю, что мы в результате получаем машинный код или псевдокод, но я почему-то склоняюсь к последнему. При этом у меня нет никакой информации о существовании таких триков для этого псевдокода, но теоретически такая возможность есть.
Так что с одной стороны может и сказки, а с другой... кто знает, кто знает...