Отладка DLL? В MT4 и MT5 - страница 16

 

Ребята я может не в тему спрашиваю, но у меня тоже проблема с библиотекой в 5 версии.

В 4 версии все работало и работает, а вот в пятой не хочет.

Может кто сможет помочь.

Из DLL вызываю функцию которая возврашает мне тескт, в 4 версии я вижу текст нормально а в 5 версии - КРАКОЗЯБЛИ.

DLL пишу на DELPHI (ф-ия типа pchar).

В коде присваиваю переменной string.

Помогите советом, что я делаю не так.

 
stongbar:

Ребята я может не в тему спрашиваю, но у меня тоже проблема с библиотекой в 5 версии.

В 4 версии все работало и работает, а вот в пятой не хочет.

Может кто сможет помочь.

Из DLL вызываю функцию которая возврашает мне тескт, в 4 версии я вижу текст нормально а в 5 версии - КРАКОЗЯБЛИ.

DLL пишу на DELPHI (ф-ия типа pchar).

В коде присваиваю переменной string.

Помогите советом, что я делаю не так.

Видимо чтото с кодировкой. Посмотри флаги открытия файла.

open_flags

[in] комбинация флагов, определяющая режим работы с файлом. Флаги определены следующим образом: 
FILE_READ файл открывается для чтения 
FILE_WRITE файл открывается для записи 
FILE_BIN двоичный режим чтения-записи (без преобразования из строки и в строку) 
FILE_CSV файл типа csv (все записанные элементы преобразуются к строкам соответствующего типа, unicode или ansi, и разделяются разделителем) 
FILE_TXT простой текстовый файл (тот же csv, однако разделитель не принимается во внимание) 
FILE_ANSI строки типа ANSI (однобайтовые символы) 
FILE_UNICODE строки типа UNICODE (двухбайтовые символы) 
FILE_SHARE_READ совместный доступ по чтению со стороны нескольких программ 
FILE_SHARE_WRITE совместный доступ по записи со стороны нескольких программ 
FILE_COMMON расположение файла в общей папке всех клиентских терминалов

 
Попробуйте PChar заменить на PWideChar (это должно помочь) или PAnsiChar (врядли). Возможно ещё нужно будет в коде подшаманить
 
notused:
Попробуйте PChar заменить на PWideChar (это должно помочь)
Полностью поддерживаю предыдущего оратора
 
Academic:

Вопрос с отладкой решается довольно легко:

Примерно  так:

Создате программу сервер,

для делфи примерно так:

Кидаете на форму компонент TcpServer

прописываете его настройки при открытии(localHost, LocalPort и свойство active  ставите в true)

у этого компонента есть обработчик, которй срабатывает при получении данных по сокету

в этом обработчике есть параметр ClientSocket:

text_from_klient := ClientSocket.Receiveln 

текст вы получили, отлаживайте сколько хотите

теперь о том как текст передать (можно кстати не только текст, но это уже сами найдете если надо)  

Вызываете в вашем советнике DLL, а эта DLL  передает параметры на определенный сокет,  

для этого в dll можно поместить компонент TcpClient настроить его(remoteHost, remotePort,  и вызываете connect )

 передача через функцию SendLn,  прием через Receiveln

То есть вам придется все время держать сервер включенным для отладки, но это не такая большая проблема

все что вам придется переделывать, так это один раз написать dll для передачи инфы на опредеденный сокет, и написать программу сервер,

состоящую из 30 строк, в которой будет вызываться ваша уже давно написанная (или свеженаписанная DLL), также придется индикаторы немного подправить для такого дела,

но для индикаторов можно набросать шаблон для такого расклада,

P.S. нельзя отлаживать DLL  ну нельзя так нельзя, ничто же нам не мешает передать данные из неотлаживаемой DLL в отдельную

программу, которую можно свободно отладить :) 

 

mql5:

 Сейчас на уровне языка создание вредоносных EX5 невозможно.
Ну о-о-очень смелое заявление. :) Интересно... А что подразумевается под фразой "создание вредоносных EX5"?
 
ir0407:
 Ну о-о-очень смелое заявление. :)
Что такого вредоносного уже написали? ;)
 

В данном случае вредоносность нужно рассматривать под другим углом. Если будет соответствующая отдельная разрешенная тема - то можно обсудить

 
Interesting:

Это если ламеры защиту делали, а на деле (при грамотном подходе к защите) в 10 и 100 раз дороже (по совокупности времени и сил).

За пару недель, ага сейчаза...

В нете уже куча статей лежит про то как подменить сертификат у терминала; про то как как устроен сетевой протокол и как обмениваться инфой с сервером (без терминала);

на каждом углу валяется инфа про API (хотябы "не торговое", так для анализа инфы); уж точно всем известно что находится внутри системных exe и dll (а главное как с этим всем работать).

Ну и в заключении - все мы уже давно торгуем на собственных терминалах, а бедные MQ и ДЦ не сном не духом...

Ну не смешите меня.

Простая задача - Получить список новостей с сервера поставляющего новости в терминал. В R2 решает в течени одного дня, попробуйте найти решение хотяб для MT4 (ну если есть подобный опыт сделайте сами "новостного клиента").

Разработчики прямо заявили, что добвление возможности дебагинга DLL не будет и почему. По крайней мере не логично просить их намеренно ухудшить систему зашиты своего кода, это сразу приведет к попыткам создать декомпилятор для ex5 (о чем и было НАПРЯМУЮ заявлено).

А методика взлома ex4 тут не прокатит, поскольку язык совсем другой и объектную его начинку будет не так просто подогнать под шаблоны "взлома" ex4.

PS

Вы правы, о системе взлома лучше говорить с профи, занимающимися этим. Правда, боюсь, что с нами по этому поводу они говорить вряд ли будут, поскольку (может я и ошибаюсь) никто из нас в этой области не компетентен... 
Интересно, и где это много информации в интернете как подменить сертификат?
Причина обращения: