Discussione sull’articolo "Sicurezza del codice MQL5: Protezione con password, generatori di chiavi, limiti di tempo, licenze remote e tecniche avanzate di crittografia delle chiavi di licenza EA" - pagina 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
Ho anche provato a usare i socket in passato, ma ho smesso perché il server si blocca finché non riceve qualcosa ...
Una volta c'era anche una soluzione che utilizzava la memoria condivisa, ma non sono riuscito a far funzionare nemmeno quella.
Utilizzavo un disco RAM e poi semplicemente scrivevo, leggevo e cancellavo i file con le funzioni di Windows(kernel32.dll), il che funziona ed è abbastanza semplice.
Secondo il modello client-server, il server viene avviato per primo, perché attende le domande dei (molti) client e poi i client.
Non succede nulla nel programma del server (bloccato) finché non arriva qualcosa dai clienti, quindi fa qualcosa brevemente e poi torna nel suo stato di attesa.
Secondo il modello client-server, il server viene avviato per primo, perché attende le domande dei (molti) client e poi i client.
Non succede nulla nel programma del server (bloccato) finché non arriva qualcosa dai client, quindi fa qualcosa brevemente e poi torna nel suo stato di attesa.
Ahhh logico, prima si invia tutto e poi il server risponde. Se il server risponde, la connessione è stabilita e posso interrogare la risposta e reagire di conseguenza. Se non c'è risposta, il messaggio " Server di licenza non connesso. "
Alla fine, il dibattito verte su: "quanto tempo posso guadagnare prima che il prodotto venga craccato". L'obiettivo è quello di rendere così costoso il cracking che non ne vale più la pena.
Un metodo che si potrebbe implementare è l'offuscamento del codice. Rinominare ogni variabile e metodo con un nome casuale. double Signal diventerebbe double AB1234, double IndicatorValue diventerebbe CD1234. Non risolve il problema, ma di sicuro rende il codice più difficile da decompilare. Rende molto difficile trovare il punto in cui viene effettuato il controllo della licenza per poterlo modificare.
Un'altra soluzione sarebbe quella di gestire tutto internamente, ogni indicatore, ogni expert advisor viene calcolato solo sul server del proprietario. L'utente invia al server le licenze, i dati delle barre, l'ora del server, ecc. Il server risponde con il valore dell'indicatore o l'azione dell'EA. Questa soluzione, di per sé piuttosto costosa e lunga da implementare, risolve la maggior parte dei problemi.
Spero di aver suscitato un po' di curiosità e di essere stato d'aiuto.
Una piccola nota: in MQL5 il compilatore elimina già i nomi delle variabili, i nomi delle funzioni e i commenti quando genera il file .ex5.
L'eseguibile è quindi già abbastanza "opaco", quindi l'offuscamento mediante la ridenominazione degli identificatori non aggiunge un ulteriore livello di protezione.
e cosa significa il messaggio "Licence server not connected. " ?
A proposito, conoscete: https://www.mql5.com/en/forum/432897?
Una semplice ricerca per RemoteProtectedEABase6.
e cosa significa il messaggio "Licence server not connected. " ?
A proposito, conoscete: https://www.mql5.com/en/forum/432897?
Una semplice ricerca per RemoteProtectedEABase6.
e cosa vi dice: "Server di licenza non connesso. " ?
Cosa mi dice? Beh cosa, nessuna connessione ... Non so cosa intendiate con questa domanda.
L'articolo collegato è bello ma non mi aiuta.
Io uso WinInet.dll.
Al meglio delle mie conoscenze non riesco a pensare a dove dovrebbe essere l'errore.
Ho anche provato a usare i socket in passato, ma ho smesso perché il server si blocca finché non riceve qualcosa ...
Una volta c'era anche una soluzione che utilizzava la memoria condivisa, ma non sono riuscito a far funzionare nemmeno quella.
Utilizzavo un disco RAM e poi semplicemente scrivevo, leggevo e cancellavo i file con le funzioni di Windows(kernel32.dll), il che funziona ed è abbastanza semplice.
Ho anche provato a usare i socket in passato, ma ho smesso perché il server si blocca finché non ottiene qualcosa ....
Ho capito bene che devo prima inviare tutti i dati e poi chiedere se c'è una connessione?
Secondo il modello client-server, il server viene avviato per primo, perché attende le domande dei (molti) client e poi i client.
Non succede nulla nel programma del server (bloccato) finché non arriva qualcosa dai clienti, quindi fa qualcosa brevemente e poi torna nel suo stato di attesa.
Cercare trade copier nel CodeBase...Secondo il modello client-server, il server viene avviato per primo, perché attende le domande dei (molti) client e poi i client.
Non succede nulla nel programma del server (bloccato) finché non arriva qualcosa dai client, quindi fa qualcosa brevemente e poi torna nel suo stato di attesa.
Deepl dice questo: https://www.deepl.com/translator#en/de/License%20server%20not%20connected
La domanda ora è: perché? È in esecuzione? È protetto? ...
Salve, come posso inserire il punto 7 nel mio EA per evitare di decompilare il file ex.5?
Avete esempi di codice per evitare questo?
Potresti spiegarmi in dettaglio?
Una piccola nota: in MQL5 il compilatore elimina già i nomi delle variabili, i nomi delle funzioni e i commenti quando genera il file .ex5.
L'eseguibile è quindi già abbastanza "opaco", quindi l'offuscamento mediante la ridenominazione degli identificatori non aggiunge un ulteriore livello di protezione.