АвторСообщение





Пост N: 23
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
ссылка на сообщение  Отправлено: 31.12.11 10:40. Заголовок: Перенос кода в библиотеку DLL .....


Здравствуйте ! Интересует перенос куска кода из стандартного советника в библиотеку DLL с целью защиты кода от взлома .....
Покажите пожалуйста пример как это делается ..... И дайте по возможности какой то мануал......

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 17 , стр: 1 2 All [только новые]


постоянный участник


Пост N: 279
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 03.01.12 13:27. Заголовок: Добрый день. Если с..


Добрый день.

Если ставить цель именно так (защита от взлома), то только ради этого переносить код не стоит. Будет, конечно, некоторый эффект, т.к. воспользоваться существующим декомпилятором MQL4 у злоумышленников уже не получится. Это приведет только к тому, что уменьшится количество людей, способных взломать вашу программу.
Если же в вашем коде есть что-то действительно уникальное и стоящее, то помещение кода в DLL не спасет программу от взлома. Найдутся умельцы.

Теперь по сути.
Сами модули DLL пишутся на любом доступном вам языке высокого уровня. В свое время я пробовал писать их на Delphi, но в конце концов пришел к написанию на C++, т.к. сам терминал МТ4 (и МТ5 тоже) написан на этом языке.
О том, как это делается, очень хорошо описано в статье Как за 10 минут написать DLL библиотеку и обмениваться данными. Для Delphi есть похожая статья: Руководство по написанию DLL для MQL5 на Delphi.

Принципы, описанные в этих статьях, подходят и для MQL4. Есть, конечно, небольшие отличия (работа со строками, например, различается), но в целом подход одинаковый.
Также не забудьте заглянуть в папку терминала experts\samples. Там как раз приведен код эксперта, использующего DLL (проект для C++ тоже имеется).

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 25
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
ссылка на сообщение  Отправлено: 15.02.12 20:53. Заголовок: Хорошо я понял что д..


Хорошо я понял что длл не выход ! Тогда как ???
Что лучше сделать ???
Может сделать обфускацию ??? Тогда как и какие принципы использовать ???

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 303
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 16.02.12 12:11. Заголовок: voldemar227 пишет: ..


voldemar227 пишет:

 цитата:
Хорошо я понял что длл не выход ! Тогда как ???



Ну почему же? Очень даже выход. Необходимо хорошо подумать в этом направлении. Не ищите распространенных путей, придумайте что-то свое. Чем оригинальнее решение, тем меньше шансов у взломщиков. И, конечно же, не стоит трубить на весь свет о найденном решении.

voldemar227 пишет:

 цитата:
Может сделать обфускацию ???



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

Самый лучший способ защиты программы - не распространять ее. Если речь идет об эксперте, то пользуйтесь им сами для получения прибыли, не поддавайтесь желанию получить быструю, но не постоянную прибыль от его продажи.
Если же речь идет о программе, которая приносит прибыль именно своим распространением, то стоит задуматься о правильно поставленном способе продажи. Лучше всего ориентироваться на корпоративных, а не на частных клиентов, т.к. корпорации вряд ли будут опускаться до банального взлома (репутация дороже). О взломе больше думают частные лица. Если частникам предоставлять программу бесплатно, то и мыслей о взломе ни у кого не возникнет.

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 28
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
ссылка на сообщение  Отправлено: 28.07.12 21:25. Заголовок: Как с помощью длл сд..


Как с помощью длл сделать проверку демо или реал ????

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 430
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 29.07.12 10:49. Заголовок: voldemar227 пишет: ..


voldemar227 пишет:

 цитата:
Как с помощью длл сделать проверку демо или реал ????


Прямого способа нет, т.к. из DLL невозможно обращение к терминалу без использования элементов MQL4. Поэтому передавайте в DLL результат исполнения функции IsDemo.

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 29
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
ссылка на сообщение  Отправлено: 30.07.12 12:23. Заголовок: то есть if ( IsDemo..


то есть
if ( IsDemo())
{
int a=1;
}
мы передадим в длл переменную "а" ... и длл дальше работает
но при декомпиляции человеку достаточно сделать
if (1 == 1)
{
int a=1;
}
и эффект будет тот же.
как сделать так что бы человек не мог вырезать длл ??
Не мог удалить все обращения в длл ?
и в тоже время как получить в длл то что счет демо или реал ???

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 432
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 30.07.12 13:10. Заголовок: voldemar227 пишет: ..


voldemar227 пишет:

 цитата:
но при декомпиляции человеку достаточно сделать



Такая проблема была в ранних билдах МТ4. Сейчас (во всяком случае, на 432-ом билде) такой финт уже не проходит.

Другое дело, что взломать файл могут и без использования декомпилятора.
На эту проблему можно посмотреть под другим углом. Вы же собираетесь распространять только ex4-версию? Значит, файл у любого пользователя должен быть неизменным. В этом случае достаточно из DLL проверить контрольную сумму (CRC) ex4 файла. Если она не совпадает с той контрольной суммой, которую Вы получили при компиляции на своей машине, значит, советник был декомпилирован. Контрольную сумму при изменениях в программе подделать будет достаточно тяжело (но не значит, что невозможно!). Для этого взломщику, как минимум, нужно будет знать, что контрольная сумма проверяется сторонней программой.

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 30
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
ссылка на сообщение  Отправлено: 30.07.12 13:48. Заголовок: Scriptong пишет: &#..


Scriptong пишет:

 цитата:


да нет проходит такой финт ....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 433
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 30.07.12 17:22. Заголовок: Очень хорошо вы нато..



 цитата:
Очень хорошо вы натолкнули на хорошую мысль!!!
А как из длл проверить контрольную сумму советника ???



1. Открыть ex4-файл.
2. Считать его побайтно.
3. Рассчитать CRC для массива байт.

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

voldemar227 пишет:

 цитата:
да нет проходит такой финт ....



Не понял, что это вы показали? Декомпилятор не может знать, что переменная имеет имя "а". Он ставит что-то типа "li_1". Вы уверены, что показали код, генерированный декомпилятором?

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 31
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
ссылка на сообщение  Отправлено: 30.07.12 19:27. Заголовок: я показал вам что т..


я показал вам что
то есть
if ( IsDemo())
{
int a=1;
}
легко переделывается в
if (1 == 1)
{
int a=1;
}
а при декомпиле будет
if ( IsDemo())
{
int li_1=1;
}
тоесть мерзавец может в декомпилированном коде сделать
if (1==1)
{
int li_1=1;
}
и условие волнится !!!
Вопрос по ходу возникает если переменная меняется с а на li_1
библиотека длл примет переменную li_1 ???

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 17 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 11
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет