Proteggere il codice dell'applicazione

di il
17 risposte

Proteggere il codice dell'applicazione

Salve,
ho realizzato un applicazione in C# installabile, come posso proteggere il codice in modo che non possano vedere il sorgente dato che la devo distribuire?

17 Risposte

  • Re: Proteggere il codice dell'applicazione

    Quando hai creato l'installer, ci hai messo pure i sorgenti?
  • Re: Proteggere il codice dell'applicazione

    race ha scritto:


    come posso proteggere il codice in modo che non possano vedere il sorgente dato che la devo distribuire?
    Domanda posta ormai un milione di volte: vedi ad esempio questa discussione.

    Ciò che puoi fare al massimo è "offuscarlo", oppure codificare gli algoritmi più delicati in un linguaggio diverso da MSIL (es. un linguaggio nativo prodotto con C++, Delphi o simile); tuttavia, questo non mette comunque al riparo dal 100% dei casi in quanto, se si vuole fare reverse engineering, non lo si può impedire (il programma in codice macchina alla fine può sempre essere letto).

    La tematica riguarda una questione più di carattere legale piuttosto che tecnica.

    Se parliamo comunque di un programma tendenzialmente banale, non vale nemmeno la pena di prendere in considerazione l'ipotesi (troppo spesso gli sviluppatori danno per scontato una smodata voglia altrui di smontare l'applicazione dopo che questa è stata realizzata incrociando una query con una griglia dati).

    Ciao!
  • Re: Proteggere il codice dell'applicazione

    Scusami, non ci ho pensato di fare la ricerca!

    Perchè offuscarlo e basta, con il Visual Studio non si può creare delle Dll cifrate?

    Il programmino è banale ma dato che ogni licenza è per un account facebook, se lo aprono e lo riproducono possono utilizzarlo con più account facebook, quindi va a farsi friggere la limitazione.
  • Re: Proteggere il codice dell'applicazione

    race ha scritto:


    Salve,
    ho realizzato un applicazione in C# installabile, come posso proteggere il codice in modo che non possano vedere il sorgente dato che la devo distribuire?
    che non possano decompilare o analizzare l'eseguibile...

    race ha scritto:


    Il programmino è banale ma dato che ogni licenza è per un account facebook, se lo aprono e lo riproducono possono utilizzarlo con più account facebook, quindi va a farsi friggere la limitazione.
    Se programmi in .Net, gli eseguibili mantengono le stringhe contenute nelle variabili con i rispettivi codici ASCII in chiaro.
    Per evitare che qualcuno cambi la stringa nell'eseguibile che contiene l'account, magari con un HexEditor, puoi semplicemente inventarti una codifica, la più banale è lo shift, oppure codifichi con una chiave.
    Il risultato è che nell'eseguibile la stringa che contiene l'account non è più facilmente identificabile e modificabile.

    Invece la decompilazione si può rendere più difficile con i programmi di offuscamento qui un elenco a pagamento e gratis:
    http://www.csharp411.com/net-obfuscators

    P.s. chi è in grado di decompilare il tuo eseguibile e ricompilare con un account diverso, è in grado di replicare le funzioni del tuo programma anche senza vedere il sorgente.
  • Re: Proteggere il codice dell'applicazione

    Rubik ha scritto:


    P.s. chi è in grado di decompilare il tuo eseguibile e ricompilare con un account diverso, è in grado di replicare le funzioni del tuo programma anche senza vedere il sorgente.
    è vero!!
  • Re: Proteggere il codice dell'applicazione

    race ha scritto:


    Perchè offuscarlo e basta, con il Visual Studio non si può creare delle Dll cifrate?
    Il codice deve essere "eseguibile", quindi non può essere cifrato.
    Quello che può essere cifrato sono i dati.

    race ha scritto:


    Il programmino è banale ma dato che ogni licenza è per un account facebook, se lo aprono e lo riproducono possono utilizzarlo con più account facebook, quindi va a farsi friggere la limitazione.
    Al netto che decompilare il codice richiede un minimo di conoscenza dei tool di sviluppo, la limitazione può anche basarsi su un servizio online di attivazione che svolge un'attività di controllo sulla licenza dell'utente... il requisito che poni si risolve agendo sull'architettura o sull'informazione, non offuscando il codice.
  • Re: Proteggere il codice dell'applicazione

    Alka ha scritto:


    Al netto che decompilare il codice richiede un minimo di conoscenza dei tool di sviluppo, la limitazione può anche basarsi su un servizio online di attivazione che svolge un'attività di controllo sulla licenza dell'utente... il requisito che poni si risolve agendo sull'architettura o sull'informazione, non offuscando il codice.
    Puoi distribuire insieme all'exe, un file testo codificato con le credenziali ed altri codici di tua invenzione che abilitano l'app solo se viene usato il giusto account.
  • Re: Proteggere il codice dell'applicazione

    Rubik ha scritto:


    Alka ha scritto:


    Al netto che decompilare il codice richiede un minimo di conoscenza dei tool di sviluppo, la limitazione può anche basarsi su un servizio online di attivazione che svolge un'attività di controllo sulla licenza dell'utente... il requisito che poni si risolve agendo sull'architettura o sull'informazione, non offuscando il codice.
    Puoi distribuire insieme all'exe, un file testo codificato con le credenziali ed altri codici di tua invenzione che abilitano l'app solo se viene usato il giusto account.
    E dove sarebbe la protezione?
  • Re: Proteggere il codice dell'applicazione

    Rubik ha scritto:


    P.s. chi è in grado di decompilare il tuo eseguibile e ricompilare con un account diverso, è in grado di replicare le funzioni del tuo programma anche senza vedere il sorgente.
    hai meritato un giro di birra virtuale
  • Re: Proteggere il codice dell'applicazione

    @race ... non hai alcun modo inviolabile quindi rassegnati ...
  • Re: Proteggere il codice dell'applicazione

    Ok, mi rassegno all'inviolabilità del codice, ma...., in ogni caso vorrei "cercare" di non fare utilizzare il programmino a più account.

    Dato che il programmino pubblica post nei vari gruppi Facebook oppure dalla pagina condivide nei gruppi, ho pensato a questa dinamica:

    1) l'utente si registra nel mio sito per la prima volta inserendo la mail che utilizza in Facebook per potere scaricare il software
    2) lo installa e lo utilizza inserendo i dati di accesso al suo account Facebook (questo per forza dato che il software deve aprire il Browser e loggarsi con il suo account )
    3) Il software invia la mail al mio server per verificare che esista e quindi l'utente ha pagato quindi esiste
    4) Nel caso utilizza un altro account Facebook la risposta sarà "false" dato che non esiste nel Database del sito

    Cosa ne pensate
  • Re: Proteggere il codice dell'applicazione

    race ha scritto:


    Cosa ne pensate
    Il meccanismo sarà efficace nella maggior parte dei casi, ma ovviamente non è assolutamente infallibile o non aggirabile, poiché (avendo le competenze) si può decompilare il programma e andare ad aggirare la funzionalità che cerca sul database l'esistenza dell'account pagante.

    A mio avviso, l'unico reale espediente che si può adottare è spostare la logica della funzionalità principale dal client al server, affinché non sia scaricabile in nessuna forma dall'utente, al quale verrà fornito comunque un client per semplificare l'accesso alle suddette funzionalità, ma sarà sempre il server a svolgere i controlli di rito e a eseguire l'operazione richiesta su sollecito del client.

    Ciao!
  • Re: Proteggere il codice dell'applicazione

    race ha scritto:


    3) Il software invia la mail al mio server per verificare che esista e quindi l'utente ha pagato quindi esiste
    4) Nel caso utilizza un altro account Facebook la risposta sarà "false" dato che non esiste nel Database del sito

    Cosa ne pensate
    Che non è così facile, in quanto nulla vieta (basta alterare il file hosts) di farsi un proprio server di "autenticazione" che risponda sempre TRUE ad ogni richiesta.
    A sua volta questo meccanismo non è per nulla banale da mettere in piedi.

    Ma la domanda da porsi è: quanti lo faranno? Quanti sono, grosso modo, i clienti/utenti?
    Decine? Migliaia? Milioni?
    A seconda della cardinalità si possono pensare a soluzioni che RIDUCANO la pirateria, non l'annullino
  • Re: Proteggere il codice dell'applicazione

    Alka ha scritto:


    A mio avviso, l'unico reale espediente che si può adottare è spostare la logica della funzionalità principale dal client al server, affinché non sia scaricabile in nessuna forma dall'utente, al quale verrà fornito comunque un client per semplificare l'accesso alle suddette funzionalità, ma sarà sempre il server a svolgere i controlli di rito e a eseguire l'operazione richiesta su sollecito del client.
    Assolutamente!
    Questa soluzione taglierebbe la testa al toro.

    Hosting Win
    Comunicazione tra Client e Server con "Web Services" o "API REST"
Devi accedere o registrarti per scrivere nel forum
17 risposte