Proteção do Código: Nova linguagem MQL4(Build 600+) proteção de descompilação e outras técnicas de rachadura.

 

Hi,

Eu li sobre o novo mql4(Build 600+) e já atualizei meus EAs, agora tenho uma pergunta. Quão segura é a nova proteção contra crackers e outros tipos de rachaduras executáveis e a modificação do código. EX: data de edição hexadecimal de expiração, despejos de memória, etc... Quão segura é agora uma simples restrição de tempo(data de expiração) em um EA? Como implementar novas técnicas de proteção utilizando a nova linguagem?

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);
        }  

Obrigado

 

Do que Renat (CEO da Metaquotes) disse :

  • Os novos ex4 são código nativo (como DLL) e não mais pseudo código. Portanto, eles são mais difíceis de descompilar.
  • Os ex4 são comprimidos (ou outra técnica de ofuscação não conhecida), portanto, descompilados é difícil de entender.
  • Os ex4 para Mercado são criptografados. A técnica exata utilizada não está disponível publicamente.

Relato estas informações de memória, portanto espero não cometer um erro. Também não verifico estas informações na prática.

 
Obrigado pela resposta, mas isso não acrescentou muito ao meu conhecimento. É possível descompilar? poderá ser possível num futuro próximo? (alguma aposta?)
 
investguy:
Obrigado pela resposta, mas isso não acrescentou muito ao meu conhecimento. É possível descompilar? poderá ser possível em um futuro próximo? (alguma aposta?)

AFAIK, um produto criptografado não pode ser descompilado. É preciso descriptografá-lo primeiro. Um produto sempre pode ser descompilado. Mas é uma questão de custos. Se custar 10$ para descompilar um ex4 antigo, talvez o novo ex4 precise de 1.000.000$ (só para dizer algo). Você tem a idéia?

 
StrToTime("2014.09.30 00:00");

Uma corda pura é fácil de invadir. Tente compilá-la e ver se a corda é visível no ex4. Ela deve ser criptografada agora (Build 6xx). Verifique.

Por que usar uma cadeia de caracteres também? Use uma data real de 8 bytes.

#define  EXPIRATION D'2014.09.30 00:00'
 

É criptografada, mas infelizmente as variáveis de propriedade ainda são visíveis.

 
investguy: É criptografada, mas infelizmente as variáveis de propriedade ainda são visíveis.
Isso não é uma infelicidade, é de propósito. Se você não consegue ler o copywrite no arquivo, então ele não é copywrited. Mas a seqüência de datas não é visível.
 
investguy:

Hi,

Eu li sobre o novo mql4(Build 600+) e já atualizei meus EAs, agora tenho uma pergunta. Quão segura é a nova proteção contra crackers e outros tipos de crackers executáveis e a modificação do código. EX: data de edição hexadecimal de expiração, despejos de memória, etc... Quão segura é agora uma simples restrição de tempo (data de expiração) em um EA? Como implementar novas técnicas de proteção utilizando a nova linguagem?

ex:

Obrigado


AFAIK, não há a possibilidade, até agora, de um descompilador atualmente trabalhando para .ex4 compilado com o Build 6xx


MAS, o problema com seu código, para qualquer pessoa realmente interessada em rachá-lo, é que é muito fácil transformar seu

if (condition...)

para

if (!condition

Ou ainda mais fácil, para o NOP que retorna(1)

Para retomar, a descompilação não é possível agora.


Mas o que ainda é possível é desmontar o código. E para qualquer pessoa com pouco conhecimento de assembler, seria bastante fácil inverter a engenharia de seu código e quebrá-lo.

 
yokinfx: Mas o que ainda é possível é desmontar o código. E para qualquer pessoa com pouco conhecimento de assembler, seria bastante fácil inverter a engenharia de seu código e quebrá-lo.
Não é para ser código de máquina, é para ser criptografado.
 
yokinfx:


AFAIK, não há a possibilidade, até agora, de um descompilador atualmente trabalhando para .ex4 compilado com o Build 6xx


MAS, o problema com seu código, para qualquer pessoa realmente interessada em descompilá-lo, é que é muito fácil transformar seu

para

Ou ainda mais fácil, para o NOP que retorna(1)

Para retomar, a descompilação não é possível agora.


Mas o que ainda é possível é desmontar o código. E para qualquer pessoa com pouco conhecimento de assembler, seria bastante fácil inverter a engenharia de seu código e quebrá-lo.

Realmente ? Você pode provar isso ?
 
Coloque seu código em uma DLL. Essa é a resposta vencedora do prêmio desde a MQL2.