Discussion of article "Securing MQL5 code: Password Protection, Key Generators, Time-limits, Remote Licenses and Advanced EA License Key Encryption Techniques" - page 5

 

and what does the "Licence server not connected. " ?

By the way, do you know: https://www.mql5.com/en/forum/432897?

A simple search for RemoteProtectedEABase6.

Communicating with an api/custom server using a HTTP request inside of .mq5 indicator code - I'm trying to find out what I was doing with A. Mq5 indicator and Winlet DLL?
Communicating with an api/custom server using a HTTP request inside of .mq5 indicator code - I'm trying to find out what I was doing with A. Mq5 indicator and Winlet DLL?
  • 2022.09.19
  • www.mql5.com
Indicator code: python flask server code: so i was toying with the idea of just using winlet or using something like curl in a c++. In essence a service and a script behave basically the same, but to keep a service alive and running you have to use a loop
 
Carl Schreiber #:

and what does the "Licence server not connected. " ?

By the way, do you know: https://www.mql5.com/en/forum/432897?

A simple search for RemoteProtectedEABase6.

and, what does that tell you: " Licence server not connected. " ?

What does it tell me? Well what, no connection ... I don't know what you mean by this question.

The linked article is nice but doesn't help me.

I use WinInet.dll.

With the best of my knowledge I can't think of where the error should be.

 

I also tried to use sockets in the past, but I stopped because the server blocks until it gets something ...

There was also once a solution using shared memory - I couldn't get that to work either.

I would use a RAM disc and then simply write, read and delete files there with the Windows functions(kernel32.dll), that works and is quite simple.

 
Carl Schreiber #:

I also tried to use sockets in the past, but I stopped because the server blocks until it gets something ....

Do I understand correctly that I first have to send all the data and then ask if there is a connection?

 

Well, according to the client-server model, the server is started first, because it waits for the questions from the (many) client(s) and then the client(s).

Nothing happens in the server's programme (blocked) until something comes from the clients, then it does something briefly and then falls back into its waiting state.

Search for trade copier in the CodeBase...
 
Carl Schreiber #:

Well, according to the client-server model, the server is started first, because it waits for the questions from the (many) client(s) and then the client(s).

Nothing happens in the server's programme (blocked) until something comes from the clients, then it does something briefly and then falls back into its waiting state.

Ahhh logical, first send everything then the server responds. If the server responds, the connection is established and I can query the response and react accordingly. If there is no response, the message " Licence server not connected. "
 

Deepl says this: https://www.deepl.com/translator#en/de/License%20server%20not%20connected

The question now is why? Is it running? Protected? ...

 

Hello, how can I put item 7 in my EA to avoid decompiling the ex.5 file?

Do you have code examples to avoid this?

Could you explain in detail?

 
Thank you for this article.

In the end, this debate is about: "how much time can I gain, before the product gets cracked". Aiming to make it so expensive to crack, that its not worth it anymore.

A method one could implement, is code obfuscation. Renaming every variable and method with some random name. double Signal would become double AB1234, double IndicatorValue would become CD1234. It doesn't solve the problem, but sure makes it a headache for the person that decompiles the code. It makes it really hard to find where the licencing check is done to potentially change it.

Another solution would be to handle everything internally, every indicator, every expert advisor gets calculated only on the owners server. The user sends licencing, bar data, server time, etc to the server. The server responds with an indicator value or EA action. This on itself would be quite expensive and time consuming to implement, and solves most of the issues.

I Hope this sparked some curiosity and could be of any help.
 
Winged Trading #:

Just as a small note: in MQL5 the compiler already strips out variable names, function names and comments when generating the .ex5.

The executable is therefore already quite "opaque", so obfuscation by renaming identifiers doesn't really add an extra layer of protection here.