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





Пост 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 
ПрофильЦитата Ответить
постоянный участник


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


voldemar227 пишет:

 цитата:
Вопрос по ходу возникает если переменная меняется с а на li_1
библиотека длл примет переменную li_1 ???


Название переменной в ex4-файле не сохраняется. Поэтому ex4-файл с обеими переменными будет "выглядеть" одинаково до байта.
Метод заключается в том, чтобы найти отличия между условиями:

 цитата:
if (IsDemo())


и

 цитата:
if (1==1)



А отличие будет. Проведите эксперимент сами и убедитесь в этом, сравнив два ex4-файла побайтно.

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





Пост N: 32
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
ссылка на сообщение  Отправлено: 31.07.12 17:37. Заголовок: да я понял но к сожа..


да я понял но к сожалению в с++ и других языках я слаб очень, точнее полный ноль и написать такую библиотеку сос равнение веса файлов для меня все равно что станцевать балет .....
я готов за подобную работу заплатить ....

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


Пост N: 437
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 31.07.12 19:19. Заголовок: Есть два препятствия..


Есть два препятствия для исполнения этой просьбы:

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

2. На данном этапе ни один из наших сотрудников не выполняет частные заказы ни на каких условиях, т.к. все заняты разработкой AG4M. Это наивысший приоритет.

Гораздо продуктивнее для Вас было бы начать изучение C++. Не скажу, что это просто (язык гораздо сложнее, чем MQL4), но при проявлении настойчивости, можно разобраться в алгоритме выполнения поставленной задачи уже через несколько месяцев.
Со своей стороны могу обещать поддержку на этом форуме советом.


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





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


я думаю стоит открыть отдельно ветку по вопросам связанным с С++

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



Пост N: 1
Зарегистрирован: 21.02.13
ссылка на сообщение  Отправлено: 21.02.13 12:42. Заголовок: Scriptong пишет: 1...


Scriptong пишет:

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

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



Данная защита также очень легко ломается, а точнее обходится.
Декомпилируется ех4 и правится фрагменты кода где передается номер счета и т.д. и библиотека запускается из декомпелированного файла. В итоге мы имеем оригинал ех4 файла который будет обрабатываться (просчитываться CRC), так как файл не был изменен то проверка пройдет успешно.

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




Пост N: 1062
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 21.02.13 12:58. Заголовок: FxJobber пишет: Дан..


FxJobber пишет:

 цитата:
Данная защита также очень легко ломается, а точнее обходится.
Декомпилируется ех4 и правится фрагменты кода где передается номер счета и т.д. и библиотека запускается из декомпелированного файла. В итоге мы имеем оригинал ех4 файла который будет обрабатываться (просчитываться CRC), так как файл не был изменен то проверка пройдет успешно.


Но ведь файл был изменён в тех местах, где номер счёта и т.п. Речь может идти только о методах расчёта CRC. Если я ошибаюсь, поправьте меня, пожалуйста.

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


Пост N: 599
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 21.02.13 14:26. Заголовок: FxJobber пишет: Дан..


FxJobber пишет:

 цитата:
Данная защита также очень легко ломается, а точнее обходится.


Ломать - не строить. Непробиваемой защиты не существует. Другое дело, сколько времени Вы потратите на декодирование файла, зашифрованного уникальным способом. Речь идет как раз о том, как быстро будет подобран ключик к шифру. Это потом уже декомпиляция и т. д.


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

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