2010-03-30 12 views
6

Lavoravo molto in JavaScript e una cosa che infastidiva davvero i miei datori di lavoro era che il codice sorgente era troppo facile da rubare. Anche con l'offuscamento, nulla è stato di grande aiuto, perché tutti sapevamo che qualsiasi sviluppatore competente sarebbe stato in grado di leggere quel codice se lo volesse.È impossibile proteggere il codice .net (proprietà intellettuale)?

JS Gli script sono una cosa, ma per quanto riguarda i progetti SOA che hanno investito milioni in IP (Proprietà intellettuale). Amo .net, e in particolare C#, ma di recente ho dovuto rispondere nuovamente alla domanda "Se diamo questo programma compilato ai nostri clienti, i loro sviluppatori possono decodificarlo?" Avevo fatto di tutto per nascondere il codice, ma sapevo che non ci sarebbe voluto molto per un altro sviluppatore C# determinato per ottenere il codice.

Quindi mi pongo seriamente la domanda, è impossibile proteggere il codice .net?

Le considerazioni che hanno come come segue:

  1. Anche regolari eseguibili nativi può essere invertita, ma non tutti gli sviluppatori ha la capacità di essere in grado di fare questo. È molto più difficile smontare un eseguibile nativo che un assembly .net.
  2. L'offuscamento ti porterà solo lontano, ma aiuta un po '.
  3. Perché non ho mai visto alcun riconoscimento pubblico da parte di Microsoft che qualsiasi cosa scritta in .net sia soggetta a un furto di IP relativamente facile? Perché non ho mai visto uno scarto di addestramento su misura su qualsiasi sito Microsoft? Perché VS ha una community offuscata come componente opzionale? Ok forse ho appena avuto la testa nella sabbia qui, ma non è esattamente in cima alla maggior parte degli sviluppatori di priorità.
  4. Ci sono piani per risolvere i miei dubbi in qualsiasi versione futura di .net?

Non sto bussando .net, ma vorrei alcune risposte realistiche, grazie, domanda contrassegnata come soggettiva e comunitaria!

+2

Non so nulla di .NET, ma so che è molto difficile portare i nuovi sviluppatori su un progetto complesso, anche se fai tutto il possibile per aiutarli. Grandi progetti sono * morti * perché troppi sviluppatori se ne sono andati subito; quando la cultura è persa, il codice è come un milione di pagine di geroglifici. Un concorrente potrebbe rubare uno o due trucchetti, ma potrebbero fare altrettanto bene guardando il * comportamento * del codice e implementandolo da zero. – Beta

risposta

10

Tutti i codici possono essere decodificati.

.NET abbassa la barra per questo (basta provare Reflector!), Ma l'offuscamento lo solleva di nuovo. Un buon obfuscator alzerà il livello abbastanza per impedire a tutti, tranne una persona molto motivata e motivata, di decodificare il codice.

Detto questo, personalmente preferirei concentrarmi sulla qualità. Gestisco un piccolo ISV e usiamo .NET: l'offuscamento è importante, ma se riesci a fornire prodotti di qualità, non importa se qualcuno prova a decodificare il codice.

Anche, ipoteticamente, se potessero decodificare tutto, con un progetto complesso, sarebbero in realtà anni dietro consegnare qualcosa con un vantaggio competitivo nel mercato ...

+1

Accetto il riflettore, ottimo strumento per i giusti motivi! Hai detto che usi un buon obfuscater, ti dispiacerebbe includere un link per favore? –

+1

dotfuscator è quello che ho sentito di più su ... http://www.preemptive.com/products/dotfuscator/overview – tbischel

+0

Dotfuscator è il più comune e molto buono. Ci sono tonnellate là fuori, però - ogni ricerca di .NET Obfuscator diventerà un mucchio ... –

1

Ogni codice può essere inversa ingegnerizzato. Sì, è più semplice in .NET o Java rispetto al C++ altamente ottimizzato, ma meno che in Javascript o PHP. L'offuscamento contribuisce notevolmente a ridurre la vulnerabilità, ma la realtà è che un determinato reverse engineer troverà i tuoi segreti una volta che il codice sarà nelle sue mani, indipendentemente da ciò che hai fatto per nasconderlo. Tutto quello che stai facendo è, nel migliore dei casi, renderlo più fastidioso per lui.

I buoni strumenti di offuscamento impediscono al programmatore occasionale la cui esperienza inizia e finisce con Reflector di capire veramente come funziona il codice. Oltre a ciò, qualsiasi cosa tu faccia è in gran parte senza speranza.

Non vedo questo cambiamento in qualsiasi momento nel prossimo futuro, perché le funzionalità di .NET che rendono così facile il reverse-engineering sono le stesse caratteristiche che consentono la riflessione potente e il dinamismo nel quadro.

Problemi correlati