How MQLLock works
ML uses innovative technology to convert existing MQL code into C++, automatically! The ML Engine is a service that sits on a firewalled server and is responsible for converting MQL to C++
Of course, it’s not possible to convert 100% of MQL into C++. Functions that are native trading specific (like price information and order send routines) cannot/should not be converted, but everything else is converted automatically by the ML Engine.
ML is an automatic converting service and more. Apart from protecting your MQL code very efficiently it also provides an obfuscation and licensing service in one. Other features include: making updates, client support and even stopping your project remotely if you no longer wish to offer a particular product.
The conversion procedure
You submit your private source code to the ML Engine and it converts your code into 2 separate files:
- Public Source Code: This file is obfuscated and drastically changed into completely new source code. The new code is still fully compatible with MQL and works in exactly the same way as your original MQL file, even after the drastic changes. The changes are made automatically by the ML Engine. If you review the new Public Source Code in detail you will notice that it’s almost impossible to understand the algorithm.
- Public DLL File: Besides the exported MQL functions this file also contains: Protection of Public Source Code, Disassembler Protection, Anti-Cracker Protection, Anti-Debugger Protection, Licensing Mechanism, MQLLock Library Routines, Expiration Date Routines, Communication with Licensing Servers, and much, much more.
These 2 files are designed to work together and to be sent to the client after you have compiled them with your local MQL compiler.
After converting you will have 3 files:
- Private Source Code: You should keep this code in a safe place! Do NOT make it public or send a compiled version of this code to your clients. Keep it in a safe place and make your updates on this file.
- Public Source Code: You take this file and compile. After you’ve compiled it, test it to make sure it functions in exactly the same way as the original.
- Public DLL File: This file will need to be in the experts/libraries directory to enable your project to work with ML.
Simply compile the Public Source Code and ship the EX4 file to your clients with the Public DLL File.
Decompiling Public Source Files
It’s important that you as vendor understand the ML Protection concept. ML by itself is not protection against decompilers. However, ML ensures that even if someone does manage to decompile your Public Source Files, they won’t be able to work with your project! This is the whole point of ML. ML exports all the important stuff into a DLL and the DLL protects its corresponding Public Source File. Even if someone decompiles your project, they won’t be able to modify it for several reasons. First of all, the ML Engine sits inside the DLL file. Think of this DLL file as your “safe”. Anyone who might add lines to your source code won’t be able to understand your algorithm or skip your licensing. It would take this person hours to change only one small string. The ML Engine can convert almost all the entire MQL content of your files into DLL files. The ML project combines security, protection, licensing, obfuscation, and authentication in one place.