stealthForex ha scritto:xr2009 ha scritto:Grazie della risposta.
Una curiosita'.....i file .ex4 son facili da decompilare?
Non che voglia decompilare...e perche' si potrebbe creare una password in base al numero di account in uso...ma se il file .ex4 si puo decompilare facilmente non serve a niente!
Si, gli ex4 sono facilissimi da decompilare, anche se protetti con la maggior parte degli appositi programmi commerciali
Ma basta che il tuo EA passi il numero del conto in uso alla DLL, e questa è praticamente IMPOSSIBILE da decriptare se la complili con l'apposita opzione
A questo punto la DLL crea e scrive una variabile nei registri di sistema (cosa semplicissima da fare in C#) e ci mette
NON IL NUMERO DI CONTO, MA L'HASH e visto che così è in mezzo ad altre centinaia di migliaia, è praticamente impossibile che qualcuno riesca a trovarla e
ASSOLUTAMENTE IMPOSSIBILE che riesca a cambiare l'hash e crearne uno per il suo o un altro conto
Quando l'EA riparte, la DLL sa qual'è la variabile e controlla se
l'HASH del numero di conto corrisponde, se no si ferma
Poi nella DLL ci metti anche un "pezzo" dell'EA, tipo ad ogni tick l'EA passa alla DLL ask e bid assieme ai valori degli indicatori che usi, ed è la DLL che calcola se aprire o meno l'ordine, poi restituisce -1 se è un sell, +1 se un buy, 0 se non deve aprire, così il Cliente non può farne a meno
In pratica tutto il gioco sta nello spostare la protezione dentro la DLL anziché nell'EA, che così puoi distribuire anche in mq4 e senza altre protezioni
Sono anni che non programmo più a pagamento, ormai riesco a mantenermi solo col trading, ma ti spiego il sistema che utilizzavamo noi ultimamente per proteggere gli EA
1. Contavamo sull'egoismo umano
Se mi
REGALANO qualcosa, io te la copio o te la passo volentieri, ma
se io la PAGO, perché devo regalarla a te? Se vuoi te la compri!
Basta che pensi ... ai libri, che fatica che fa un amico o un conoscente a prestarti un libro, e poi ci sono sempre storie "... e l'ultimo non me l'hai restituito ... e te lo sei tenuto troppo ... non posso prestartelo perché voglio tenerlo e rileggerlo ... io non presto mai i miei libri ... e me lo hai rovinato, adesso è tutto spiegazzato ..."
E questo se è un amico o un parente, se è solo un conoscente cosa ti dice? "Guarda che è un bel libro...
ti CONSIGLIO di COMPRARTELO"
2. Anziché legare l'EA al conto, lo legavamo al PC
Il
TIMESTAMP sono il numero di secondi che sono passati dalla mezzanotte del 01/01/1970 e continua sempre a crescere
La base è sempre mettere "un pezzo" dell'EA dentro alla DLL in modo che il Cliente non possa farne a meno
Noi facevamo come spiegato, ad ogni tick l'EA passava alla DLL ask, bid e valori degli indicatori, ma era la DLL a fare il calcolo se aprire o meno, e restituiva appunto +1 per il buy, -1 per il sell e 0 se non doveva aprire nulla, oppure un prezzo che automaticamente se superiore all'ask era un buystop se inferiore al bid era un sellstop, poi l'EA gestiva normalmente l'ordine aperto o fissato
Quando consegnavamo l'EA al Cliente la compilavamo sul momento e la DLL memorizzava il TIMESTAMP = l'istante in cui "è nata"
Poi quando l'EA parte per la prima volta, la DLL controlla nei registri di sistema se esiste la variabile con il suo TIMESTAMP, se no la crea, ma
non devono essere passati più di 5 giorni dalla compilazione
Questo vuol dire
che il Cliente aveva 5 giorni per installare il programma (o se vuoi anche meno), poi la DLL si "legava" a quel PC e non potevi più spostarla
Fammi pure sapere se servono chiarimenti... ma la nostra "impostazione" è stata sempre legare l'EA a DLL esterne sviluppate prima in C++ e poi in C#/.NET come spiegato nell'altro topic che stai già seguendo