Domanda

Per un po 'abbiamo usato uno strumento chiamato CodeVeil. Mi chiedo solo se ci sono alternative migliori là fuori.

Modifica: prima che più persone fraintendano la domanda, sono consapevole che un determinato cracker sarebbe probabilmente in grado di sconfiggere uno di questi strumenti. Non sono troppo preoccupato per loro però. Questi strumenti hanno solo lo scopo di fermare il "cracker occasionale" e di impedire alle persone di rubare la proprietà intellettuale della nostra azienda. Se sono abbastanza bravi da superare uno strumento decente, probabilmente non sono interessati a rubare il nostro codice schifoso :-P

È stato utile?

Soluzione

Ho avuto molto successo con Xenocode Postbuild. Lo strumento può offuscare gli assembly .NET, proteggere lo smontaggio del riflettore di agaist, combinare gli assembly .NET in un unico eseguibile ("quotazione di virtualizzazione") e persino compilare applicazioni .NET in eseguibili autonomi che non richiedono l'installazione di .NET runtime.

Altri suggerimenti

Rimango non convinto dal valore di questi strumenti. Nessuna delle soluzioni tecnologiche impedisce il reverse engineering meglio delle guardie legali come licenze, marchi, brevetti, diritti d'autore ecc ...

.NET è davvero un grande movimento di sorgente trasparente. È molto meglio, invece, inquadrare le condizioni d'uso attorno al proprio IP come licenze e copyright.

La compilazione dell'applicazione .NET genera assiemi di output che contengono una grande quantità di meta informazioni. Questa informazione rende molto semplice ricostruire qualcosa di molto vicino al codice originale. Un eccellente strumento gratuito chiamato .NET Reflector può essere usato per fare esattamente questo ed è un modo popolare per esaminare come funzionano le librerie di classi base. Scarica e usa questo strumento per visualizzare le versioni C # / VB.NET ricostruite dei contenuti dell'assembly.

Se sei un'organizzazione commerciale, non vuoi che le persone trovino facile guardare il tuo costoso produrre codice. Un metodo popolare è utilizzare Obfuscation per mescolare i contenuti in un modo che non altera il modo in cui viene eseguito ma rende difficile la comprensione. L'offuscamento utilizza tecniche come rinominare variabili e metodi. Risolvere lo scopo dei metodi 'a1', 'a2', 'a3' è molto più difficile dell'originale 'GetName', 'UpdateInterestRate' e 'SetNewPassword'.

Quindi l'uso dell'offuscamento rende molto più difficile per le persone capire cosa sta facendo il codice e gli algoritmi che utilizza. Non lo rende tuttavia impossibile. Allo stesso modo in cui il codice C ++ può ancora essere compreso da un esperto dell'assemblatore che è disposto a passare il tempo a lavorare sul tuo binario, un esperto MSIL può eventualmente elaborare il tuo codice offuscato. Ma aumenta la barriera al punto in cui pochi si preoccuperanno di provare.

Onestamente, non c'è molto che puoi fare oltre a qualche offuscamento con strumenti come hai menzionato. .NET è solo un gradino sopra i linguaggi di scripting, ad eccezione dei comandi di script binari e chiamati IL. È un po 'più di semplificazione, ma non è troppo lontano dalla realtà. Qualsiasi buon programma scritto usando Reflection può essere usato per decodificare le applicazioni .NET, o se hai abbastanza conoscenza, un buon editor esadecimale.

Esistono diversi strumenti popolari per l'offuscamento, tra cui Dotfuscation, che ha una "luce". versione fornita con Visual Studio 2005 e 2008. Hanno una versione Pro che fa molto di più della semplice ridenominazione di nomi di funzioni e variabili. Tuttavia, il codice è ancora visualizzabile, è solo un po 'confuso per rendere più difficile la lettura e il grok del flusso logico del software.

Un'altra tecnica consiste nell'utilizzare altri programmi che crittograferanno il programma e lo decifreranno in fase di esecuzione. Tuttavia, questa non è nemmeno una soluzione perfetta. In realtà, non esiste una soluzione perfetta di cui sia a conoscenza che impedirà a un determinato ingegnere di retroingegnerizzare il software, se vengono applicati tempo e sforzi sufficienti.

Ciò a cui si riduce veramente è determinare il livello di protezione che renderà sufficientemente difficile dissuadere l'hacker occasionale e renderlo il più costoso possibile da decodificare, quindi almeno il retroingegnerizzazione ha un costo in o tempo o denaro, o idealmente entrambi. Quanto più costosi sono i costi di ingegneria inversa, tanto minore sarà il numero di individui che saranno disposti a impegnarsi. E questo è il grande punto di offuscamento.

Alcuni pensano che l'uso di un compilatore come il compilatore C ++ che compila in codice nativo impedirà questo tipo di ingegneria inversa, ma non è così. Un buon disassemblatore consentirà di eseguire anche il reverse engineering di eseguibili binari puri, quindi non esiste una soluzione perfetta. Se il computer è in grado di leggerlo ed eseguirlo, la memoria utilizzata dal computer può essere scansionata e tracciata, ignorando tutti i tentativi di crittografare, offuscare o qualsiasi altro mezzo per mantenere il codice nelle mani di un determinato ingegnere.

Mi spiace resuscitare un vecchio post, ma penso che .NET Reactor di Eziriz funzioni alla perfezione.

In effetti lo uso da solo per tutte le mie app .net e apparentemente non esiste uno strumento esistente in grado di decompilare un programma protetto con il reattore .net. Maggiori dettagli sono disponibili sulla pagina delle informazioni lì, http://www.eziriz.com/dotnet_reactor.htm . Provalo con la versione di prova e il riflettore .net e puoi vederlo da solo.

DISCLAIMER: Non lavoro per RedGate, i produttori di SmartAssembly. Sono solo un cliente molto felice che ha trovato una soluzione valida e conveniente.

La scelta è molto semplice, scegli SmartAssembly! Non perdere tempo o denaro con gli altri offuscatori sul mercato. Ho speso più soldi in termini di ore non fatturabili per la valutazione di prodotti concorrenti. Tutti avevano difetti fatali ed erano quasi impossibili da eseguire il debug. SmartAssembly è un'applicazione di facile utilizzo, ben documentata e lucidata con un supporto eccellente. Pubblica una domanda sul loro forum e aspettati una risposta ragionevolmente veloce dagli sviluppatori reali.

SmartAssembly è più di un oscuratore. Ha una serie di funzionalità, tra cui un generatore di report sugli arresti anomali integrato altamente personalizzabile che i tuoi clienti possono inviare automaticamente tramite e-mail. È possibile visualizzare questi report sul proprio server o su server Red-Gates. Non posso dirti quanto sia utile quando esegui il beta test o rilasci il prodotto ai clienti. Genera anche file di debugger in modo da poter eseguire il debug di eventuali problemi post-release che potresti incontrare con il tuo prodotto offuscato.

Se stai distribuendo un'applicazione commerciale, ha senso spendere i soldi per un discreto obsfuscator. Una cattiva scelta qui può compromettere la tua proprietà intellettuale o, peggio, condurti a giorni di raccapricciante debug. Quanto costerebbe rispetto a quanto costa SmartAssembly?

Ho sentito che Obfusticator è buono; è usato su .Net Reflector.

Un altro è Crypto Obfuscator - è più conveniente di alcuni altri e ha vari metodi di offuscamento e protezione per ostacolare gli hacker causali e non casuali.

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