Protezione della paternità del codice MQL in MT5. - pagina 2

 

Per quanto riguarda EX4, è molto probabilmente Editor che è stato decompilato.

E sembra essere nudo dalle protezioni. Non ci sono flussi finanziari.

E se entrambi i componenti protetti (Client & Editor) operano con le chiavi - più speranza di successo.

;)

 

5 centesimi...


1. La maggior parte dei prodotti (se non tutti) richiedono una connessione per essere utilizzati.

2. Così, una "chiave" sotto forma di un "servizio" messo in rete (sul sito dell'autore).

Quando si avvia il terminale, il terminale con un indicatore o Expert Advisor, in esecuzione su di esso, lo "usa"...

E, di conseguenza, il problema della decompilazione non è più un problema.


Fuori dalla categoria. Il prodotto deve essere davvero interessante.

Una recensione di un prodotto venduto sulla "base" di algoritmi super segreti

ha mostrato che non c'è niente di interessante e ancora meno utile... ahimè...


In linea di principio, l'algoritmo stesso è super-duper, se l'autore pensa così, può essere messo sul sito.

L'Expert Advisor dovrebbe solo gestire e implementare in processi commerciali, che non è un segreto, anche se è apertamente pubblicato.

- l'EA invia una richiesta (per abbonamento)

- riceve valori

- Processi

- commercio

- possono essere simultaneamente impegnati a disegnare

//

Lo stesso per l'indicatore, tranne che per il trading


Organizza l'abbonamento stesso per numero di conto...


In generale, come diceva un imperatore romano: dividi e conquista!

 
circlesquares :


Il fatto è che la decompilazione è ancora un problema. Se tutto il codice necessario è all'interno dell'EA, allora la decompilazione insieme a una chiave di lavoro conosciuta produce il codice sorgente dell'EA con tutte le conseguenze che ne derivano.

Se parte del codice si trova sul sito web, tuttavia, questa è una soluzione molto inaffidabile. Qualsiasi fallimento del sito può portare a perdite impressionanti di denaro dei clienti.

 
api :

Inoltre, una volta ho visto una menzione da qualche parte che il codice MQL5 si compila in codice CPU nativo. Non so: lo è davvero o no, ma se lo è, è un grave buco nella protezione dalla decompilazione.

E in che modo questo ridurrebbe la sicurezza?

L'aggiunta di codice è impedita usando la crittografia asimmetrica - se la chiave è abbastanza lunga, sarebbe impossibile falsificare la firma.

Se intendete la decompilazione - la sua automazione è molto difficile per il codice macchina. Non intendo disassemblare - è possibile perché il processore stesso deve eseguire il codice in qualche modo. Ci sono tentativi di decompilazione automatica(http://www.hex-rays.com/) ma si riducono principalmente all'analisi di tutte le possibili opzioni del codice generato dal compilatore (che non diventa affatto un compito banale, perché come ho capito la conversione in codice macchina sarà eseguita sul lato delle meta-citazioni). Se vincoliamo il generatore di codice alla fase della luna (cioè a compilare i costrutti in modi diversi), l'automazione della decompilazione diventa irrealistica!

 
lea :

E in che modo questo ridurrebbe la sicurezza?

L'aggiunta di codice è impedita dalla crittografia asimmetrica - se la chiave è abbastanza lunga, sarebbe impossibile falsificare la firma.

Se intendete la decompilazione - la sua automazione è molto difficile per il codice macchina. Non intendo disassemblare - è possibile perché il processore stesso deve eseguire il codice in qualche modo. Ci sono tentativi di decompilazione automatica(http://www.hex-rays.com/) ma si riducono principalmente all'analisi di tutte le possibili versioni di codice generate dal compilatore (che diventa un compito tutt'altro che banale, perché come ho capito la conversione in codice macchina sarà eseguita sul lato delle meta-citazioni). Se vincoliamo il lavoro del generatore di codice alla fase della luna (cioè a compilare i costrutti in modo diverso), l'automazione della decompilazione diventa irrealistica!


Infatti, intendevo dire smontare. Io, come spesso accade a tutti, ho giudicato in base alle mie capacità. Per me è simile alla decompilazione, poiché nella maggior parte dei casi posso facilmente ricostruire l'algoritmo dal testo dell'assembler. Naturalmente, questo processo può essere molto complicato utilizzando algoritmi di virus polimorfi, ma alla fine, dato che ci sono anti-virus, anche questo metodo non dà una garanzia completa.

 
api :


Infatti, intendevo dire smontare. Come spesso accade a tutti, stavo giudicando in base alle mie capacità. Per me è simile alla decompilazione, poiché posso facilmente ricostruire l'algoritmo dal testo assembler nella maggior parte dei casi. Naturalmente, questo processo può essere molto complicato utilizzando algoritmi di virus polimorfi, ma alla fine, dato che ci sono anti-virus, anche questo metodo non dà una garanzia completa.

Disassemblare file di grandi dimensioni (anche con ida) e ricostruire manualmente l'algoritmo richiede molto tempo e fatica. È dubbio che la gente pratichi spesso questo approccio. Ma sembra che questo sia l'unico metodo che sarà possibile per i file di codice macchina in futuro, se gli sviluppatori riescono a complicare il codice macchina generato in qualche modo.
Gli antivirus raramente usano algoritmi speciali. Per lo più si aggrappano a particolarità di file e sequenze di istruzioni - ho incontrato un antivirus che si lamentava di calcolare pi greco attraverso la somma di serie (mi stavo allenando a usare la fpu). La decompilazione è un compito fondamentalmente diverso. Se si eseguono mutazioni irreversibili del codice durante la generazione del codice, la decompilazione per varianti caratteristiche del codice sarà impossibile in linea di principio (sarà necessario emulare/tracciare il codice e guardare cosa succede ad "alto livello" - da dove è stato letto, cosa e dove è stato scritto, cosa e con quali parametri è stato chiamato... gli antivirus sembrano usare un approccio simile, ma guardano solo la sequenza di chiamate di varie funzioni di sistema).

Sul tema delle mutazioni irreversibili, forse butto lì qualche link ad articoli (spero che all'amministrazione e ai lettori non dispiaccia il fatto che ci siano dei link):

 

Proprio per il littering/offuscamento del codice in MQL5, è possibile specificare un modificatore speciale per ogni funzione:

void MyFunc(int val) trash
  {
   Print("Val: ",val);
  }

Per ora si chiama spazzatura, ma molto probabilmente lo cambieremo in protezione.


Questo si tradurrà in un profondo sfaldamento del codice e in un rallentamento della funzione specificata.


Inoltre, il compilatore MQL5 utilizza un sacco di ottimizzazioni, che riduce drasticamente la possibilità di decompilazione inversa.

 
Renat :

Proprio per il garbage/obfuscation del codice in MQL5, si può specificare un modificatore speciale per ogni funzione:

Bene :) Sarà possibile regolare la percentuale di codice spazzatura? Le funzioni saranno incorporate in base alla loro posizione di chiamata?

 
lea :

Questo è buono :) Sarà possibile regolare la percentuale di codice spazzatura? L'incorporazione della funzione sarà fatta al punto di chiamata?

La spazzatura sarà diversa ogni volta. Non si può personalizzare la percentuale - spetta al compilatore decidere.


Le funzioni in linea automatiche funzionano da molto tempo - il compilatore stesso prende le decisioni a seconda della dimensione e della complessità della funzione. Cioè, le funzioni di grandi dimensioni non sono delineate.

 

Eh... Come è facile per me vivere...

Non ho alcun desiderio di hackerare, né ho intenzione di vendere qualcosa nel prossimo futuro.

Questo è il problema della gente...

:)))