Domanda

Stiamo progettando di sviluppare un'applicazione client-server utilizzando C # e MySQL. Abbiamo in programma di vendere il prodotto sullo scaffale come qualsiasi altro software di utilità. Siamo preoccupati per la decompilazione del nostro prodotto che non hanno una sorta di vantaggio rispetto ai nostri concorrenti in termini di usabilità e funzionalità in bundle.

Come possiamo impedire che il nostro software di decompilazione, quindi la logica di business del prodotto rimane intatto?

Abbiamo sentito parlare del riflettore e di altri decompilatori che rende il nostro codice molto vulnerabili per la copia.

La nostra base di clienti non è Corporates ma i medici che si può non farlo, ma i nostri concorrenti potrebbero voler copiare / licensing disabilitare o addirittura replicare il codice / funzionalità in modo che il valore del nostro prodotto va giù nel mercato.

Ogni suggerimento per evitare che questo è il benvenuto.

È stato utile?

Soluzione

Se si distribuisce assembly .NET per le macchine client, una sorta di decompilazione sarà sempre possibile utilizzando riflettore e simili strumenti.

Tuttavia, questa situazione non è sostanzialmente diverso da quello che ci si incontra se hai scritto l'applicazione in C ++ nativo. E 'sempre possibile decompilare cose -. Se fosse impossibile, il processore non riusciva a capire neanche

Si è mai andare a sconfiggere il cracker esperto -. Faranno trattano la sicurezza come un puzzle intellettuale da risolvere per la sola sfida

La questione ruota attorno a quanto sia difficile per sconfiggere i tuoi pratiche di concessione di licenze e la il ritorno sugli investimenti .

sedersi con un foglio di calcolo e guardare attraverso gli scenari possibili - il pericolo è probabilmente meno di quanto si pensi.

Fattori come "facilità d'uso" sono visibili nel software per qualsiasi utente di osservare - così si potrebbe pensare facile copiare. Ma, buona esperienza utente è raro (e raramente copiato bene), perché la maggior parte gli sviluppatori (me compreso) non sono come gli utenti tipici.

Io suggerirei di concentrarsi sul rendere il lavoro di un cracker di più difficile, perché non si può mai rendere impossibile, basta non redditizia.

Una possibilità da provare: E 'possibile pre-compilazione assemblee in codice nativo come parte del processo di installazione. Paint.NET fa questo per motivi di prestazioni. Credo che una volta che hai fatto questo, è possibile eliminare i gruppi originali e utilizzare le edizioni, di codice nativo ottimizzato.

Altri suggerimenti

Se si trattasse di me, non sarei tentare di offuscare; Lo farei:

  1. Non ti preoccupare e mirano a migliorare continuamente e rimanere davanti

Ma in secondo luogo

  1. Considerare la fornitura dei servizi 'segreti' sul Web. Sta a voi decidere come critico e possibile questo è; ma lo fa "prevenire" la decompilazione, perché l'utente finale non ha nemmeno il codice.

Google for .NET Obfuscator. Troverete un sacco di prodotti che vi aiuteranno in questo. domande Inoltre ci sono legati già chiesto in Stack Overflow.

Ecco alcuni:

Modifica : Durante la ricerca di strumenti di De-offuscamento, mi sono imbattuto in uno strumento open source De4Dot . Questo strumento supporta decompilazione obfucated DLL creati dalla maggior parte degli strumenti commerciali e fa un buon lavoro troppo.

L'ultima volta che ho guardato in questo, Spices.Net Obfuscator sembrava la cosa migliore sul mercato.

No, io non lavoro per loro. :)

smartassembly . E 'semplice da usare e ha anche la possibilità di inviare i rapporti sugli arresti anomali anche voi integrato.

Gli obfuscators altri hanno detto probabilmente molto buona.

Un approccio alternativo si potrebbe non avere considerato è di codificare alcuni dei logica aziendale di base utilizzando un linguaggio che è completamente compilato in codice macchina, ad esempio C ++.

Il vantaggio di questa operazione è che lo rende molto più difficile per qualcuno di decompilare il codice. Un inconveniente di questo è che si dispone di codice in due lingue da mantenere. Questo potrebbe non essere l'approccio migliore per la vostra situazione, ma è utile nei casi in cui solo una piccola parte del codice deve essere offuscato, mentre il resto del codice è UI fluff.

Per fare un esempio, il pacchetto software medico potrebbe esibirà il rilevamento dei bordi di dire, alcune ghiandole allo scopo di raccontare un medico la dimensione di dette ghiandola. L'algoritmo per il calcolo delle dimensioni della ghiandola da un'immagine bitmap sarebbe contenuta in una DLL scritta in C ++.

per rispondere alla tua domanda circa l'involucro C ++ intorno al codice .NET; Non credo che avrebbe funzionato, perché quando si distribuisce l'applicazione del C ++ dll e .net finale dll che contiene il codice di business logic saranno entità separate e quelli che vogliono ottenere per la logica di business sarebbero ancora in grado di scegliere solo il .net DLL e un'occhiata all'interno.

si potrebbe prendere in considerazione Remotesoft Salamander Protector questo è molto meglio di ogni altra cosa che rende impossibile per decompilare al linguaggio di alto livello.

Naturalmente, qualcuno che è un esperto può passare abbastanza tempo con il software e capirlo perché decompilare alcuni, ma nasconde tutto il set e ottenere metodi

Quindi, possono ottenere un picco, ma che è su di esso. devono capire il resto che abbassa la probabilità di qualcuno solo romperlo.

Spero che questo aiuti

La scrittura su questo thread, dopo un lungo periodo di tempo. Abbiamo acquistato un software chiamato IntelliLock che è utile per prevenire la decompilazione, offuscamento e ha anche una forte modulo di licenza.

Non siamo andati per .Net Reactor anche se ha più controlli di prevenzione come IntelliLock stava servendo il nostro scopo abbastanza bene.

Obfuscator confonde il codice, ma di protezione protegge. È possibile utilizzare protettore .Net: NetWinProtector

IntelliLock ha servito il nostro scopo bene in termini di offuscamento e licenze. Ma non vorrei raccomandare il prodotto come il supporto non è ripartire il mark. Non abbiamo mai avuto risposte in tempo per il problema che stavamo affrontando. Abbiamo dovuto cercare e di ricerca da soli o anche modificare il requisito business per raggiungere alcuni obiettivi.

Via questa risposta non mi l'intenzione di promuovere o abbassare alcun software, ma voglio solo rendere le persone consapevoli circa il prodotto che stiamo usando in modo che possano fare saggia decisione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top