If i create an EX4. with MQH can it be protected against decompile ?

 

Lets assume i want to get full protection. As i heard someone decompiled the locker of account. I may want to prevent client mistake aswell . If client sends the mq4 File instead of ex4.
The question is
If i create an MQH File and include that in to ex4. Compile.

So even if they mistakely send mq4 that they will not be able to compile if MQH not exist.

And if client sends the Compiled ex4 Is there a way to gain access the source even without MQH lets say even if it got decompiled somehow. Can they see what mqh file had ? ?

Looking further for the answers thank you.

 
  1. Why did you post your MT4 question in the Root / MT5 General section instead of the MQL4 section, (bottom of the Root page?)
              General rules and best pratices of the Forum. - General - MQL5 programming forum
    Next time post in the correct place. The moderators will likely move this thread there soon.

  2. There has been zero proof that any ex4/5 can be decompiled since Build 600+ 2014.02.03
              Upcoming MetaTrader 4 and MQL4 Upgrades - Big Changes Are Underway (MetaQuotes Software Corp.) - MQL4 programming forum
              Code Protection: New MQL4 language(Build 600+) decompilation protection and other crack techniques. (Macos Silva) - MQL4 programming forum - Page 2

  3. The MQL4/MQH is source code. They can try to compile but will be missing some of the code.
 
William Roeder:
  1. Why did you post your MT4 question in the Root / MT5 General section instead of the MQL4 section, (bottom of the Root page?)
              General rules and best pratices of the Forum. - General - MQL5 programming forum
    Next time post in the correct place. The moderators will likely move this thread there soon.

  2. There has been zero proof that any ex4/5 can be decompiled since Build 600+ 2014.02.03
              Upcoming MetaTrader 4 and MQL4 Upgrades - Big Changes Are Underway (MetaQuotes Software Corp.) - MQL4 programming forum
              Code Protection: New MQL4 language(Build 600+) decompilation protection and other crack techniques. (Macos Silva) - MQL4 programming forum - Page 2

Sorry , Not very used to post on forum.

I had a complaint from a client that somehow users removed his AccountLocker and Expiry date. Might it be done with hex Editors ?

Would MQH Protect me for such case ?

Thanks in advance.

 
Ferhat Mutlu: Might it be done with hex Editors ?
No
 
William Roeder:
No

So he got hacked or accidentally sent the mq4 file. However i will make a new one for him with MQH .. I think that will be enough protection for him.

Thanks.
 
Ferhat Mutlu:

So he got hacked or accidentally sent the mq4 file. However i will make a new one for him with MQH .. I think that will be enough protection for him.

Thanks.

For sure mqh or mq4 doesn't make any difference as William said.

But your issue is not clear. Your customer has the source code ? And your customer has users ? But that users don't have source code I suppose.

What kind of account locker or expiry date ?

You don't need necessarily need to decompile the source code to break a protection. All depends how it's done.

 
Alain Verleyen:

For sure mqh or mq4 doesn't make any difference as William said.

But your issue is not clear. Your customer has the source code ? And your customer has users ? But that users don't have source code I suppose.

What kind of account locker or expiry date ?

You don't need necessarily need to decompile the source code to break a protection. All depends how it's done.

     if(accountID!=0 && AccountInfoInteger(ACCOUNT_LOGIN)!=accountID)
           {
                   Alert("The wrong account number!");
                
                   return 0;
           }
           

Thanks for the response Alain & William. Im really greatful for it. Here is some more details below

This executed at OnInit.  So simply he is editting accountID from global variable. Then sending an ex4 file to his users. But somehow someone broke it and sent free one to every of his user.
So now i created an mqh file. Where he put the source. And i call this mqh file as #include source.mqh .. Then he compiles that one line in mq4 and sends the ex4 file to his clients.



Is there any probability that he will face same issue again ?

PS: All i am trying to say , Lets say theorically. If they decompile an ex4 that compiled with above 1 line. Can they still see the source code even if they have not access to mqh file ?

 
Ferhat Mutlu:

Thanks for the response Alain & William. Im really greatful for it. Here is some more details below

This executed at OnInit.  So simply he is editting accountID from global variable. Then sending an ex4 file to his users. But somehow someone broke it and sent free one to every of his user.
So now i created an mqh file. Where he put the source. And i call this mqh file as #include source.mqh .. Then he compiles that one line in mq4 and sends the ex4 file to his clients.



Is there any probability that he will face same issue again ?

PS: All i am trying to say , Lets say theorically. If they decompile an ex4 that compiled with above 1 line. Can they still see the source code even if they have not access to mqh file ?

They don't need to decompile it. Such "protection" are good for a normal user, but if some experimented hacker work it, it will probably not take long to broke it. He "just" had to find the few bytes to change in the ex4 file.

The mql5 Cloud Protector should solve this issue.

 
Alain Verleyen:

They don't need to decompile it. Such "protection" are good for a normal user, but if some experimented hacker work it, it will probably not take long to broke it. He "just" had to find the few bytes to change in the ex4 file.

The mql5 Cloud Protector should solve this issue.

Hey Alain. Thanks a lot. I have last 2 questions if i prefer to go out of cloud protect

1 - Can they change that few bytes and generate new ex4 to send rest of the users if they get an ex4 with just include file?

'2- If i change the locker in to Arrays and ASCII Table will be good enough ? as suggested in following link
https://www.mql5.com/en/articles/1572
Protect Yourselves, Developers!
Protect Yourselves, Developers!
  • www.mql5.com
Protection of intellectual property is still a big problem. This article describes the basic principles of MQL4-programs protection. Using these principles you can ensure that results of your developments are not stolen by a thief, or at least to complicate his "work" so much that he will just refuse to do it. Introduction When I started to get...
 

Ferhat Mutlu:
Hey Alain. Thanks a lot. I have last 2 questions if i prefer to go out of cloud protect

Why ? That's your best option, no doubt about that.It will make the ex4 very difficult to analyse, not even talking to decompile.


1 - Can they change that few bytes and generate new ex4 to send rest of the users if they get an ex4 with just include file?

They can't generate a new ex4 (unless proven otherwise). They can edit it and distribute the modified version.

You are still with your include file :-D ? William and I already said you 2 or 3 times it will change nothing.


'2- If i change the locker in to Arrays and ASCII Table will be good enough ? as suggested in following link
https://www.mql5.com/en/articles/1572

Obfuscation as described in this article is better that nothing. But it's weak protection compared to cryptography as used by the Cloud Protector.

 
Alain Verleyen:
Why ? That's your best option, no doubt about that.It will make the ex4 very difficult to analyse, not even talking to decompile.

They can't generate a new ex4 (unless proven otherwise). They can edit it and distribute the modified version.

You are still with your include file :-D ? William and I already said you 2 or 3 times it will change nothing.

Obfuscation as described in this article is better that nothing. But it's weak protection compared to cryptography as used by the Cloud Protector.

Thanks :)) All clear to me now

Reason: