Protezione del codice: Nuova protezione di decompilazione del linguaggio MQL4 (Build 600+) e altre tecniche di cracking.

 

Ciao,

Ho letto del nuovo mql4 (Build 600+) e ho già aggiornato i miei EA, ora ho una domanda. Quanto è sicura la nuova protezione contro i cracker e altri tipi di cracking degli eseguibili e la modifica del codice. EX: modifica hex della data di scadenza, memory dump, ecc. Quanto è sicura una semplice restrizione temporale(data di scadenza) su un EA ora? Come implementare nuove tecniche di protezione utilizzando il nuovo linguaggio?

es:

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

Grazie

 

Da quello che ha detto Renat (CEO di Metaquotes):

  • I nuovi ex4 sono codice nativo (come DLL) e non più pseudo codice. Quindi sono più difficili da decompilare.
  • Gli ex4 sono compressi (o altra tecnica di offuscamento non nota) quindi decompilati è difficile capirlo.
  • ex4 per il mercato sono criptati. La tecnica esatta utilizzata non è disponibile al pubblico.

Riporto queste informazioni a memoria, quindi spero di non sbagliare. Inoltre non controllo queste informazioni in pratica.

 
Grazie per la risposta ma non ha aggiunto molto alla mia conoscenza. È possibile decompilare? potrebbe essere possibile nel prossimo futuro? (qualche scommessa?)
 
investguy:
Grazie per la risposta ma non ha aggiunto molto alla mia conoscenza. È possibile decompilare? potrebbe essere possibile nel prossimo futuro? (qualche scommessa?)

AFAIK, un prodotto criptato non può essere decompilato. Bisogna prima decifrarlo. Un prodotto può sempre essere decompilato. Ma è una questione di costi. Se ti è costato 10$ decompilare un vecchio ex4, forse il nuovo ex4 avrà bisogno di 1.000.000$ (tanto per dire qualcosa). Hai afferrato l'idea?

 
StrToTime("2014.09.30 00:00");

Una stringa pura è facile da violare. Provate a compilarla e a vedere se la stringa è visibile nell'ex4. Ora dovrebbe essere criptata (Build 6xx). Verificate.

Inoltre, perché usare una stringa? Usate un vero datetime a 8 byte.

#define  EXPIRATION D'2014.09.30 00:00'
 

È criptato, ma purtroppo le variabili di proprietà sono ancora visibili.

 
investguy: È criptato, ma purtroppo le variabili di proprietà sono ancora visibili.
Non è una sfortuna, è fatto apposta. Se non puoi leggere il copywrite nel file, allora non è copywrite. Ma la stringa della data non è visibile.
 
investguy:

Ciao,

Ho letto del nuovo mql4 (Build 600+) e ho già aggiornato i miei EA, ora ho una domanda. Quanto è sicura la nuova protezione contro i cracker e altri tipi di cracking degli eseguibili e la modifica del codice. EX: modifica hex della data di scadenza, memory dump, ecc. Quanto è sicura una semplice restrizione temporale (data di scadenza) su un EA ora? Come implementare nuove tecniche di protezione utilizzando il nuovo linguaggio?

es:

Grazie


AFAIK, non c'è la possibilità, fino ad ora, di un decompilatore attualmente funzionante per .ex4 compilato con Build 6xx


MA, il problema con il tuo codice, per chiunque sia veramente interessato a decifrarlo, è che è molto facile trasformare il tuo

if (condition...)

per

if (!condition

O ancora più facile, per NOP che return(1)

Per riprendere, la decompilazione non è possibile ora.


Ma ciò che è ancora possibile è dissemblare il codice. E per chiunque abbia poca conoscenza dell'assembler, il reverse engeneering del vostro codice e il cracking sarebbe abbastanza facile.

 
yokinfx: Ma ciò che è ancora possibile è dissemblare il codice. E per chiunque abbia poca conoscenza dell'assemblatore, il reverse engeneering del vostro codice e il suo cracking sarebbe abbastanza facile.
Non dovrebbe essere codice macchina, dovrebbe essere criptato.
 
yokinfx:


AFAIK, non c'è la possibilità, fino ad ora, di un decompilatore attualmente funzionante per .ex4 compilato con Build 6xx


MA, il problema con il tuo codice, per chiunque sia davvero interessato a decifrarlo, è che è molto facile trasformare il tuo

per

O ancora più facile, per NOP che return(1)

Per riprendere, la decompilazione non è possibile ora.


Ma ciò che è ancora possibile è dissemblare il codice. E per chiunque abbia poca conoscenza dell'assemblatore, il reverse engeneering del tuo codice e il cracking sarebbe abbastanza facile.

Davvero? Puoi provarlo?
 
Metti il tuo codice in una DLL. Questa è la risposta vincente dai tempi di MQL2.