Protection du code : Protection contre la décompilation du nouveau langage MQL4 (Build 600+) et autres techniques de craquage.

 

Bonjour,

J'ai lu à propos du nouveau mql4 (Build 600+) et j'ai déjà mis à jour mes EAs, maintenant j'ai une question. Quelle est la sécurité de la nouvelle protection contre les crackers et autres types de craquage d'exécutable et de modification du code. EX : modification hexagonale de la date d'expiration, vidage de la mémoire, etc. Quelle est la sécurité d'une simple restriction de temps(date d'expiration) sur un EA maintenant ? Comment mettre en œuvre de nouvelles techniques de protection en utilisant le nouveau langage ?

ex :

bool Expire=TimeCurrent()>StrToTime("2014.09.30 00:00");
    if( Expire ) {
                Print("Demo period has expired: 2014.09.30 00:00 -  Contact: investguy@gmail.com ");
                return(1);
        }  

Merci

 

D'après ce que Renat (CEO de Metaquotes) a dit :

  • Les nouveaux ex4 sont du code natif (comme les DLL) et non plus du pseudo code. Ils sont donc plus difficiles à décompiler.
  • Les ex4 sont compressés (ou autre technique d'obfuscation non connue) donc après décompilation il est difficile de les comprendre.
  • ex4 pour Market sont cryptées. La technique exacte utilisée n'est pas publiquement disponible.

Je rapporte ces informations de mémoire, donc j'espère que je ne fais pas d'erreur. Je ne vérifie pas non plus ces informations dans la pratique.

 
Merci pour la réponse mais elle n'a pas apporté grand chose à mes connaissances. Est-il possible de décompiler ? Cela pourrait-il être possible dans un avenir proche ? (des paris ?)
 
investguy:
Merci pour la réponse mais elle n'a pas ajouté grand chose à mes connaissances. Est-il possible de décompiler ? Cela pourrait-il être possible dans un avenir proche ? (des paris ?)

A ma connaissance, un produit crypté ne peut pas être décompilé. Vous devez d'abord le décrypter. Un produit peut toujours être décompilé. Mais c'est une question de coûts. Si cela vous a coûté 10$ pour décompiler un ancien ex4, peut-être que le nouvel ex4 aura besoin de 1,000,000$ (juste pour dire quelque chose). Vous avez saisi l'idée ?

 
StrToTime("2014.09.30 00:00");

Une chaîne pure est facile à pirater. Essayez de le compiler et de voir si la chaîne est visible dans l'ex4. Il est censé être crypté maintenant (Build 6xx). Vérifier.

Aussi, pourquoi utiliser une chaîne de caractères ? Utilisez une date réelle de 8 octets.

#define  EXPIRATION D'2014.09.30 00:00'
 

Il est crypté mais malheureusement les variables de propriété sont toujours visibles.

 
investguy: Il est crypté mais malheureusement les variables de propriété sont toujours visibles.
Ce n'est pas malheureux, c'est voulu. Si vous ne pouvez pas lire le copywrite dans le fichier, alors il n'y a pas de copywrite. Mais la chaîne de date n'est pas visible.
 
investguy:

Bonjour,

J'ai lu à propos du nouveau mql4 (Build 600+) et j'ai déjà mis à jour mes EAs, maintenant j'ai une question. Quelle est la sécurité de la nouvelle protection contre les crackers et autres types de craquage d'exécutable et de modification du code. EX : modification hexagonale de la date d'expiration, vidage de la mémoire, etc. Quelle est la sécurité d'une simple restriction de temps (date d'expiration) sur un EA maintenant ? Comment mettre en œuvre de nouvelles techniques de protection en utilisant le nouveau langage ?

ex :

Merci


AFAIK, il n'y a pas la possibilité, jusqu'à présent, d'un décompilateur travaillant actuellement pour les .ex4 compilés avec Build 6xx


MAIS, le problème avec votre code, pour quiconque est vraiment intéressé à le craquer, est qu'il est très facile de tourner votre

if (condition...)

de

if (!condition

Ou encore plus facile, de NOP que return(1)

Pour résumer, la décompilation n'est pas possible actuellement.


Mais ce qui est encore possible est de désassembler le code. Et pour quelqu'un ayant peu de connaissances en assembleur, faire de l'ingénierie inverse de votre code et le craquer serait assez facile.

 
yokinfx: Mais ce qui est encore possible est de désassembler le code. Et pour quelqu'un ayant peu de connaissances en assembleur, faire de la rétro-ingénierie de votre code et le craquer serait assez facile.
Ce n'est pas censé être du code machine, c'est censé être crypté.
 
yokinfx:


AFAIK, il n'y a pas la possibilité, jusqu'à présent, d'un décompilateur travaillant actuellement pour les .ex4 compilés avec Build 6xx


MAIS, le problème avec votre code, pour quiconque est vraiment intéressé à le craquer, est qu'il est très facile de transformer votre fichier .ex4 en fichier .ex4.

de

Ou encore plus facile, de NOP que return(1)

Pour résumer, la décompilation n'est pas possible actuellement.


Mais ce qui est encore possible est de désassembler le code. Et pour quelqu'un ayant peu de connaissances de l'assembleur, faire de l'ingénierie inverse de votre code et le craquer serait assez facile.

Vraiment ? Pouvez-vous le prouver ?
 
Mettez votre code dans une DLL. C'est la réponse qui a été primée depuis MQL2.