调试DLL?在MT4和MT5中 - 页 16

 

伙计们,也许这不是一个正确的问题,但我也有一个关于版本5的库的问题。

在第4版中,一切都能正常工作,但在第5版中,它不愿意。

也许有人可以帮忙。

从一个DLL中调用该函数,该函数 将文本返回给我,在第4版中,我看到的文本是正常的,而在第5版中 - CRAZYBLES。

我用DELPHI(pchar type fname)写DLL。

在代码中,我分配了一个变量字符串。

请告知我做错了什么。

 
stongbar:

伙计们,也许这不是一个正确的问题,但我也有一个关于版本5的库的问题。

在第4版中,一切都能正常工作,但在第5版中,它不愿意。

也许有人可以帮忙。

我正在调用 DLL中的函数,它将文本返回给我,在4版本中,我可以正常看到文本,但在5版本中,它是BACKGROUND。

我在DELPHI中写DLL(pchar类型fname)。

在代码中,我把字符串分配给了变量。

请帮助我做错了什么。

这一定是与编码有关的问题。检查打开的文件标志。

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 расположение файла в общей папке всех клиентских терминалов

 
尝试用PWideChar(这应该有帮助)或PAnsiChar(不太可能)替换PChar。你可能还需要对代码进行调整
 
notused:
尝试用PWideChar替换PChar(这应该有帮助)。
我完全支持前述发言人的观点
 
Academic:

调试问题很容易就解决了。

大约是这样。

创建一个服务器程序。

对于Delphi来说,情况是这样的。

在表单上放置一个TcpServer组件。

在打开时,其设置中的类型(localHost、LocalPort和active属性设置为true)。

这个组件有一个处理程序,当通过套接字接收到数据时,会做出反应。

在这个处理程序中,有一个ClientSocket。

text_from_klient := ClientSocket.Receiveln

你得到了文本,你可以尽情地调试它。

现在关于如何传递文本(你可以做的不仅仅是文本,但如果你需要,你会发现它)

你在你的EA中调用一个DLL,这个DLL将参数传递给一个特定的套接字。

为此,你可以把TcpClient组件放在dll中,配置它(remoteHost,remotePort,然后你调用connect)。

通过SendLn功能传输,通过Receiveln接收。

所以你必须保持服务器的运行来调试它,但这并不是一个大问题。

你需要做的就是编写一个用于向套接字发送信息的dll,并编写一个服务器程序

你唯一要做的就是写一个30行的服务器程序,调用你已经写好的(或新写的)dll,并对指标进行一些调整。

但对于指标,你可以为此创建一个模板。

P.S. 你将无法调试DLL,没有什么能阻止我们将数据从无法启动的DLL传到一个单独的

程序,你可以自由地进行调试 :)

 

mql5:

现在不可能在语言层面上创建恶意的EX5。
这是一个非常、非常大胆的声明。:)我想知道...什么是 "创造恶意的EX5 "这句话?
 
ir0407:
这是一个非常、非常大胆的声明。:)
什么是已经写好的破坏性?;)
 

在这种情况下,需要从不同的角度考虑恶意。 如果有一个单独的、授权的主题,我们可以讨论

 
Interesting:

那是如果跛子做了保护,但事实上(如果有一个合格的保护方法),它的成本是10倍和100倍(在时间和精力上)。

在几个星期后,现在...

在网上,已经有一堆关于如何用证书代替终端的文章;关于网络协议如何组织以及如何与服务器交换信息(没有终端)。

每个角落都有关于API的信息(至少 "不是用于交易",而是用于信息分析);当然每个人都知道系统exe和dll中存储了什么(主要是如何使用这些信息)。

总之,我们都长期在自己的终端上进行交易,而可怜的MQ和DC...

不要让我笑。

这是一个简单的任务--从服务器上接收一个新闻列表,将其发送到终端。我不知道如何使用它,我将尝试为MT4寻找解决方案(如果你有这种情况的经验,创建一个 "新闻客户端")。

开发者已经直接声明,将不会对DLL进行调试,为什么?至少要求他们故意恶化他们的代码加密系统是不符合逻辑的,这将立即导致人们试图为ex5创建一个反编译器(这正是所说的)。

但黑掉ex4的方法在这里是行不通的,因为语言是完全不同的,它的对象填充不会那么容易弯曲到 "黑掉 "ex4的模板。

PS

你是对的,最好是和专业人员一起讨论黑客系统的问题。的确,我担心他们不太可能和我们谈这个问题,因为(也许我错了)我们没有人在这个领域有能力......
我想知道互联网上哪有那么多关于如何篡改证书的信息?