Discussion de l'article "Sécurisation du code MQL5 : Protection par mot de passe, générateurs de clés, délais, licences à distance et techniques avancées de cryptage des clés de licence EA" - page 5
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
J'ai essayé d'utiliser des sockets, mais j'ai abandonné parce que le serveur bloquait jusqu'à ce qu'il obtienne quelque chose...
Il y avait aussi une solution avec une mémoire partagée - je n'y suis pas parvenu non plus.
J'utiliserais un disque RAM et j'écrirais, lirais et supprimerais des fichiers à l'aide des fonctions Windows(kernel32.dll), cela fonctionne et est très simple.
Eh bien, selon le modèle client-serveur, le serveur est d'abord lancé, car il attend les questions du (des nombreux) client(s), puis le(s) client(s).
Dans le programme du serveur, il ne se passe rien (bloqué) jusqu'à ce que quelque chose arrive des clients, puis il fait quelque chose et retombe dans sa torpeur d'attente.
Eh bien, selon le modèle client-serveur, le serveur est d'abord lancé, car il attend les questions du (des nombreux) client(s), puis le(s) client(s).
Il ne se passe rien dans le programme du serveur (bloqué) jusqu'à ce que quelque chose arrive des clients, puis il fait quelque chose et retombe dans sa torpeur d'attente.
Ahhh logique, d'abord tout envoyer puis le serveur répond. Dans le cas où le serveur donne une réponse, la connexion est établie et je peux consulter la réponse et réagir en conséquence. S'il n'y a pas de réponse, le message " Licensed License" apparaît. License server not connected. "
En fin de compte, ce débat porte sur : "combien de temps puis-je gagner avant que le produit ne soit piraté". L'objectif est de rendre le piratage si coûteux qu'il n'en vaut plus la peine.
Une méthode que l'on pourrait mettre en œuvre est l'obscurcissement du code. Renommer chaque variable et méthode avec un nom aléatoire. double Signal deviendrait double AB1234, double IndicatorValue deviendrait CD1234. Cela ne résout pas le problème, mais c'est un véritable casse-tête pour la personne qui décompile le code. Il est très difficile de trouver l'endroit où le contrôle de licence est effectué pour le modifier éventuellement.
Une autre solution serait de tout gérer en interne, chaque indicateur, chaque expert advisor est calculé uniquement sur le serveur du propriétaire. L'utilisateur envoie la licence, les données de la barre, l'heure du serveur, etc. au serveur. Le serveur répond avec une valeur d'indicateur ou une action EA. En soi, cette solution serait assez coûteuse et longue à mettre en œuvre, mais elle résout la plupart des problèmes.
J'espère avoir éveillé votre curiosité et vous avoir aidé.
Petite remarque : dans MQL5, le compilateur supprime déjà les noms de variables, les noms de fonctions et les commentaires lors de la génération du fichier .ex5.
L'exécutable est donc déjà assez " opaque ", donc l'obscurcissement par renommage des identifiants n'ajoute pas vraiment une couche de protection supplémentaire ici.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
et, qu'est-ce que ça te dit : " License server not connected. " ?
Au fait, tu connais : https://www.mql5.com/en/forum/432897 ?
Une simple recherche sur RemoteProtectedEABase6.
et, qu'est-ce que ça te dit : " License server not connected. " ?
Au fait, tu connais : https://www.mql5.com/en/forum/432897 ?
Une simple recherche sur RemoteProtectedEABase6.
et, qu'est-ce que ça te dit : " License server not connected. " ?
Ce que cela me dit ? Eh bien, quoi, pas de connexion ... Je ne sais pas ce que tu veux dire par là.
L'article en lien est certes sympa mais ne m'aide pas.
J'utilise WinInet.dll.
Je ne vois pas où est l'erreur.
J'ai essayé d'utiliser des sockets, mais j'ai abandonné parce que le serveur bloquait jusqu'à ce qu'il obtienne quelque chose...
Il y avait aussi une solution avec une mémoire partagée - je n'y suis pas parvenu non plus.
J'utiliserais un disque RAM et j'écrirais, lirais et supprimerais des fichiers à l'aide des fonctions Windows(kernel32.dll), cela fonctionne et est très simple.
J'ai déjà essayé d'utiliser des sockets, mais j'ai abandonné parce que le serveur bloque jusqu'à ce qu'il reçoive quelque chose ....
Est-ce que je comprends bien que je dois d'abord envoyer toutes les données et ensuite demander s'il y a une connexion ?
Eh bien, selon le modèle client-serveur, le serveur est d'abord lancé, car il attend les questions du (des nombreux) client(s), puis le(s) client(s).
Dans le programme du serveur, il ne se passe rien (bloqué) jusqu'à ce que quelque chose arrive des clients, puis il fait quelque chose et retombe dans sa torpeur d'attente.
Cherche trade copier dans la CodeBase...Eh bien, selon le modèle client-serveur, le serveur est d'abord lancé, car il attend les questions du (des nombreux) client(s), puis le(s) client(s).
Il ne se passe rien dans le programme du serveur (bloqué) jusqu'à ce que quelque chose arrive des clients, puis il fait quelque chose et retombe dans sa torpeur d'attente.
Deepl dit ceci : https://www.deepl.com/translator#en/de/License%20server%20not%20connected
La question est maintenant pourquoi ? Est-ce qu'il fonctionne ? Protégé ? ...
Bonjour, comment puis-je mettre le point 7 dans mon EA pour éviter de décompiler le fichier ex.5 ?
Avez-vous des exemples de code pour éviter cela ?
Pourriez-vous m'expliquer en détail ?
Petite remarque : dans MQL5, le compilateur supprime déjà les noms de variables, les noms de fonctions et les commentaires lors de la génération du fichier .ex5.
L'exécutable est donc déjà assez " opaque ", donc l'obscurcissement par renommage des identifiants n'ajoute pas vraiment une couche de protection supplémentaire ici.