2009-07-01 17 views
15

Non riesco a dire che abbia mai visto un'app commerciale che utilizza .NET (altri controlli per dev/open source). Essendo così facile da 'decompilare' un'applicazione .NET usando RedGates .NET Reflector, mi chiedevo se .NET fosse orientato verso ASP.NET (dato che non puoi 'decompilare' perché il codice gira su un server e non è memorizzato sul macchina degli utenti)?Qualcuno scrive app desktop usando .NET?

+18

I linguaggi di bytecode includono molti metadati che possono aiutare nel reverse engineering delle applicazioni e dare origine a strumenti come Reflector. Tuttavia, la divisione in difficoltà per l'inversione di un'app nativa e di una .net non è così ampia. È un po 'più facile? Sicuro. La differenza è abbastanza grande da cambiare in cosa scrivere la tua app? Non c'è modo. Gli eseguibili nativi si inchinano prima di potenti strumenti come IDA Pro. Con il plugin HexRays posso persino ottenere Reflector come pseudocodice. – mmcdole

+2

@Simucal: Questo dovrebbe essere una risposta (l'avrei svalutato). – Kredns

+2

C'è qualche esempio di qualcuno che esegue il reverse engineering di un'app di qualcun altro e in realtà sta facendo qualcosa di utile con i risultati? Sembra un enorme non-problema per me. – dkretz

risposta

25

La mia azienda realizza applicazioni di imaging medicale in .NET 3.5 con WPF. Attualmente sto sviluppando anche la mia applicazione in .NET.

Paint.NET è scritto, abbastanza stranamente, nel codice nativo. Sto mentendo sfacciatamente riguardo alla frase precedente. È ovviamente scritto in .NET.

È più diffuso di quanto si possa pensare.

Come menzionato da altri utenti, è possibile utilizzare un offuscatore per rendere più difficile la decompilazione dell'applicazione. Non è impossibile, ma è più difficile - detto ciò, qualsiasi cosa può essere decompilata/invertita con un tempo e risorse sufficienti.

+2

Sì, costruiamo app di imaging medicale anche in wpf. – mmr

+0

@mmr very cool :-) bello vedere un collega ragazzo di imaging medico qui! –

+1

Scrivo software di diagnostica medica in WinForms .NET. Apparentemente, .Net è molto popolare nel settore medico. – NascarEd

4

La maggior parte dei prodotti provenienti da Redgate sono .net applicazioni desktop

+1

Hai frainteso la mia domanda. Non si tratta di RedGate, ma gli sviluppatori di tutti i giorni usano .NET per creare app desktop commerciali. –

+2

Penso che abbia capito la domanda ... sta solo usando la compagnia che hai citato nel tuo post come esempio. –

8

Conosco le applicazioni aziendali che utilizzano .NET, anche se penso che la maggior parte utilizzi il C++ gestito, che non può essere decompilato con Reflector.

Vendo personalmente un'applicazione Windows basata su .NET. Io uso Eazfuscator.NET per offuscare il codice. Ci sono molti strumenti commerciali e gratuiti che offuscano il codice .NET dopo la compilazione.

+1

L'offuscamento non è un grosso ostacolo per un esperto RE. Quando si avvia l'inversione di un'app .NET, presumo già che sia offuscato e imballato, e questo non è ancora sufficiente. Ma questo vale anche per i nativi. – mmcdole

+1

Sono d'accordo. L'offuscamento aiuta contro gli utenti non esperti che richiamano Reflector per controllare il codice. –

+0

@Chris Thompson, sicuramente. Saresti un pazzo ~ non ~ a offuscare un'app closed source. – mmcdole

11

La Microsoft Expression Studio .NET è

Visual Studio 2010 è NET

Red Gate Software è (soprattutto) .NET

... c'è anche SharpDevelop (open source però), e strumenti Microsoft Pro Photo.

+1

Ma questi sono per lo più strumenti di sviluppo che conosce già in base alla sua domanda: "... un'app commerciale che utilizza .NET (altri quindi controlli per gli sviluppatori/open source) ...";) –

+0

Quando ha detto che i controlli per sviluppatori/open source, supponevo intendesse pacchetti di controllo .NET commerciali come Telerik e Infragistics. –

5

Molti prodotti software commerciali utilizzano .NET. Uno dei miei giochi preferiti, la serie di Trainan di Auran, è scritto in gran parte su .NET. Ma sono d'accordo sul fatto che una parte più ampia della loro attenzione per .NET sono le app aziendali interne e le app basate sul web. Penso, tuttavia, che man mano che WPF guadagna la trazione, inizierai a vedere molte più applicazioni Windows che utilizzano .NET come linguaggio di back-end. E come altri hanno già detto, ci sono una serie di strumenti disponibili per aiutare a offuscare il tuo codice. Ma se la tua preoccupazione è il reverse engineering, praticamente qualsiasi linguaggio di sviluppo può essere decodificato se qualcuno lo volesse davvero.

3

L'eccellente software di modifica delle immagini Paint.NET è scritto al 100% nel codice gestito C#.

1

Non dimenticate che F-Spot (photo manager) e Banshee (musica) sono entrambi scritti per funzionare su Mono, che, lasciando la politica e brevetti fuori di esso, è .net per Linux. Ma sono app per desktop.

1

Media Center (alcune parti, per lo più l'interfaccia)
lettore Zune (parti)
Expression Miscela

0

Nikon Capture NX per Windows richiede .N ET Framework, anche se chiaramente l'intera cosa non è il codice gestito.

SourceGear Client Fault and Fortress.

1

Clear Office Spreadsheet è scritto in .NET. Sembra davvero Excel

0

Novell's PlateSpin I prodotti di migrazione/protezione e ricognizione sono tutti dotati di client desktop .NET. Questi sono, tuttavia, mirati all'impresa, piuttosto che al consumatore.

Diniego: Io ci lavoro ...

0

Alcuni dei più moderni programmi di utilità che Linn Products usi per gestire i suoi componenti di sistema audio high-end sono scritte in .NET

1

Invece di menzionare ciascun prodotto .NET mai inciampato su, lasciate solo ricordare a tutti che Java è anche in esecuzione in una JVM e può essere decodificato nello stesso modo e per lo stesso motivo di .NET

E Java è stato utilizzato ovunque dal desktop al server in molti domini diversi molto prima che .NET fosse maturo.

L'ossessione di R-E per "business"/"serio" (scegli il tuo aggettivo preferito "I'm better than others") è superflua.

Ammetto che il furto del codice avviene (tuttavia, questo è spesso per le piccole aziende di shaddy che possono farlo senza essere notato ... altrimenti i danni PR sono troppo grandi). Ma se qualcuno vuole R-E la tua applicazione, lo farà, non importa quante protezioni hai provato ad aggiungere. Una piccola protezione è buona, ma impazzire è semplicemente stupida.

1

Scrivo un plugin di interoperabilità com in un sistema CAD utilizzando VB.net. Gestisce facilmente tutte le necessarie matematiche 3D senza dover ricorrere all'utilizzo delle funzioni del motore CAD. Originariamente era scritto in VB6. Devo dire che è una gioia usare. Net invece di VB6. Sono molto più produttivo, il codice è molto più pulito e più liberamente accoppiato. Come alcuni dei precedenti poster hanno detto, se hai bisogno di prestazioni hard core puoi sempre usare C++ o c. Se sviluppi su un ambiente Windows, .Net dovrebbe essere la tua prima scelta (almeno per i livelli di presentazione e di business).

Sono preoccupato per il reverse engineering, sì. Ma non abbastanza per saltare davvero attraverso i cerchi di offuscamento. Ritengo che sia molto meglio passare il tempo a migliorare l'applicazione invece di capire come proteggerlo al di fuori delle basi. Se le persone lo vogliono abbastanza, lo otterranno. La mia più grande preoccupazione per il reverse engineering sta rivelando gli algoritmi proprietari che ho usato. Ancora una volta, la maggior parte dei nostri clienti non sono abbastanza informatici da far sì che questo sia un problema.

Cheers, Troy

0

XNA Framework consente agli sviluppatori indipendenti di scrivere XBox 360 e Windows giochi in C# codice gestito. Questi sono disponibili in commercio tramite Xbox Live:

http://catalog.xna.com/en-US/gamescatalog.aspx

Il fatto che il gioco gira su piattaforma XBox rende più difficile di decodificare il codice, ma io non sospetto impossibile.

0

Mi piace molto la domanda e mi sono sempre chiesto la stessa cosa! E se qualcuno là fuori potesse decompilare e usare questo codice che ho lavorato così duramente per finire ?!
Detto questo, ho utilizzato le lingue .Net negli ultimi 7 anni per tutti i prodotti su cui ho lavorato! potrebbe essere decompilato? SICURO! ma, dovrei essere arrabbiato che qualcuno possa usare il mio codice se hanno lavorato abbastanza per decompilarlo e poi capirlo? per me, sarei felice se qualcuno spendesse tempo e risorse per farlo! significa che sono abbastanza bravo! significa anche che sto partecipando all'istruzione di qualcuno là fuori!
D'altra parte, quando qualcuno sta usando il tuo codice, immagino che saresti molto più avanti nello sviluppo di cose più avanzate che avresti persino dimenticato di quel vecchio codice che hai scritto un paio di anni fa!
Ho appena finito di lavorare su un prodotto che può essere utilizzato come sistema di archiviazione, sistema di gestione delle risorse umane e gestione amministrativa per le aziende di medie dimensioni e sarà presto sul mercato.
Come linea di fondo, direi: la conoscenza dovrebbe essere disponibile per tutti quelli che passerebbero il tempo a cercarlo per farne uso! Immagina se alcuni dei più grandi scienziati morissero prima che le loro conoscenze si estendessero a tutti noi!

Problemi correlati