Non avendo molta esperienza in ambito Windows con questo specifico tipo di problematica non saprei cosa fare a parte tentare di utilizzare una specie di token di autenticazione che viene scambiato tra l'eseguibile principale (che effettua anche i controlli sulla chiave hardware) e le funzioni contenute nelle dll.
Arrivati a questo dovresti essere sufficientemente tranquillo del fatto che le dll non possano girare senza che l'eseguibile del tuo programma sia in esecuzione. Fatto ciò potresti usare UPX per comprimere sia eseguibile che dll. Ho notato che UPX utilizza una chiave fissa per la compressione. Questa è standard e per decomprimere è necessario conoscerla. Ciò significa che se ricompili UPX con un'altra chiave renderai più difficile ai cracker meno esperti ed a molti tool automatizzati la decompressione e l'analisi dei vari componenti. Rimane il fatto che se il tuo software costa 20000EUR, qualcuna delle aziende a cui lo vendi potrebbe comunque decidere di allocarne 2 o 3000 per la consulenza di un cracker con le palle fumanti e li potrebbero esserci problemi grossi. A presto. On Wed, 15 Apr 2015 12:58:19 +0200, Marco Signorini wrote: Grazie Carmelo, Il nostro software funziona in ambiente Windows. Si tratta di un modulo principale scritto in c++ e 6 librerie dll. Di fatto ci interessa proteggere le dll che contengono i vari processi di calcolo, il modulo principale gestisce soltanto l'interfaccia utente e l'accesso ad un database ADO, quindi di poco valore intrinseco. Nelle nostre prove abbiamo fatto fare tutto al software rilasciato dal fornitore, abbiamo apportato pochissime modifiche al codice. L'hashing delle dll mi sembra un buon suggerimento che potremmo implementare. Sino ad ora invece non siamo riusciti ad accedere alla chiave hardware dalle dll che invece vorremmo proteggere da usi illegittimi. Grazie Saluti Marco Signorini Inviato da iPhone Il giorno 15/apr/2015, alle ore 10:51, Carmelo San Giovanni ha scritto: Personalmente ho sviluppato diversi sistemi anti copia per software che girava su sistemi GNU/Linux ed in passato ho fatto parte del team del Tz Copy Protection che aveva invece come obiettivo quello di rendere incopiabili cd/dvd. Come dice Leonardo, non esistono soluzioni definitive nella maggior parte dei casi e non si può parlare di un sistema efficace ma al massimo di un sistema "ragionevolmente efficace", ovvero qualcosa che renda abbastanza complicata la copia del software da riuscire a giustificarne la spesa d'acquisto. Considerando che state già utilizzando delle chiavi hardware, immagino che abbiate scritto del codice per eseguire delle verifiche e che lo abbiate posto all'interno dell'eseguibile principale dell'applicazione. Penso che potreste eseguire anche un hashing delle dll per evitare che qualcuno le manometta e magari attuare dei meccanismi per rendere più difficoltoso il reversing. Se invece vi preoccupate che le librerie possano essere riutilizzate da terzi il problema si complica ed a mio avviso, risolverlo potrebbe addirittura rivelarsi controproducente (l'esperienza mi ha insegnato che le protezioni complesse finiscono per essere messe da parte dai programmatori, soprattutto quando ci si trova a debuggare spesso un'applicazione). In ogni caso servirebbero maggiori informazioni per analizzare bene il vostro specifico caso. Saluti. Carmelo San Giovanni. Il 15/apr/2015 08:21, "Marco Signorini" ha scritto: Buonasera a tutti. Sono iscritto da tempo a questa Mailing List che leggo con molta attenzione e cerco di imparare. Scusate se la domanda fosse OT. Qualcuno di voi ha mai utilizzato sistemi di protezione anti copia efficaci? Nella mia azienda stiamo utilizzando i dongle della Iolock che però non sono in grado di proteggere le dll. Avete dei suggerimenti? Eventualmente, sapete darmi anche un ordine di grandezza della spesa da affrontare? Grazie a tutti Cordiali saluti Marco Signorini Inviato da iPad ________________________________________________________ http://www.sikurezza.org [3] - Italian Security Mailing List -- Windows: irregolare OS X: regolare GNU/Linux: regolabile -- Windows: irregolare OS X: regolare GNU/Linux: regolabile Links: ------ [1] mailto:[email protected] [2] mailto:[email protected] [3] http://www.sikurezza.org
