views:

1352

answers:

21

I honsetly can't say that I have ever seen a commercial app that uses .NET (other then controls for devs/open source). With it being so easy to 'decompile' a .NET application using RedGates .NET Reflector, I was wondering if .NET was geared toward ASP.NET (since you can't 'decompile' because the code runs on a server and is not stored on the users machine)?

+4  A: 

Most products from RedGate are .net desktop apps

Eros
You misunderstood my question. It's not about RedGate but weather normal, everyday devs use .NET to make commercial desktop apps.
Bob Dylan
I think he understood the question...he's just using the company you mention in your post as an example.
Justin Niessner
+5  A: 

Well personally, I use Microsoft Pro Photo Tools for geotagging. It is written in .Net. You can also obfuscate the code to make it so the reflector tool cannot read it. Read Microsoft's article on obfuscating a .Net app.

jle
+7  A: 

I know of enterprise applications that use .NET, though I think most use managed C++, which can't be decompiled with Reflector.

I personally sell a .NET based Windows application. I use Eazfuscator.NET to obfuscate the code. There are lots of commercial and free tools that obfuscate .NET code after compilation.

Chris Thompson
Obfuscation isn't that big of a hindrance to a proficient RE. When you go into reversing a .NET app I already assume it is obfuscated and packed, and this still isn't enough. But this is true of native as well.
Simucal
I agree. Obfuscation helps against the non-proficient users that just pull up Reflector to check out the code.
Chris Thompson
@Chris Thompson, Definitely. You would be a fool ~not~ to obfuscate a closed source app.
Simucal
+22  A: 

My company builds medical imaging applications in .NET 3.5 with WPF. I am currently developing my own application in .NET as well.

Paint.NET is writen, oddly enough, in native code. I'm blatently lying about the previous sentence. It's obviously written in .NET.

It's more prevalent than you may think.

As someone else mentioned - you can use an obfuscator to make it more difficult for others to decompile your application. It's not impossible, but it's more difficult - that being said, anything can be decompiled/reversed engineered given enough time/resources.

unforgiven3
Yeah, we build medical imaging apps in wpf as well.
mmr
@mmr very cool :-) nice to see a fellow medical imaging guy on here!
unforgiven3
I write medical diagnostic software in WinForms .NET. Apparently, .Net is very popular in the medical industry.
NascarEd
I wonder if the medical industry is less resistant to change?
quillbreaker
@quillbreaker, I'm only in a small segment of the industry, so I can't speak for everyone, but I don't think it's really that. In fact, I'd say this industry is far more resistant to change - products have to be rock solid and last for years at install sites. For us it made sense because we quickly build UIs.
unforgiven3
+11  A: 

The Microsoft Expression Studio is .NET

Visual Studio 2010 is .NET

Red Gate Software is (mostly) .NET

...there's also SharpDevelop (open source though), and Microsoft Pro Photo tools.

Justin Niessner
But those are mostly dev tools which he already knows about according to his question: "... a commercial app that uses .NET (other then controls for devs/open source)..." ;)
tomlog
When he said controls for devs/open source, I assumed he meant commercial .NET Control packages such as Telerik and Infragistics.
Justin Niessner
+4  A: 

Many commercial software products use .NET. One of my favorite games, Auran's Trainz series, is written largely in .NET. But I would agree that a larger portion of their focus for .NET is internal business apps and web based apps. I think, however, that as WPF gains traction that you will start to see a lot more Windows apps use .NET as their backend language. And as others have said, there are a number of tools available to help obfuscate your code. But if your concern is reverse engineering, pretty much any development language can be reverse engineered if someone really wanted to.

BBlake
+3  A: 

The excellent image editing software Paint.NET is written 100% in C# managed code.

Rich
A: 

FlashDevelop (open source) is another good one http://www.flashdevelop.org/wikidocs/index.php?title=Main_Page

OG
A: 

ATI / AMD uses .NET for some of it's packaged video card applications.

Oracle provides .NET libs for the DB. And also runs .NET code inside Oracle to support .NET procs (Windows Only).

eschneider
+1  A: 

Don't forget that F-Spot (photo manager) and Banshee (music) are both written to run on Mono, which, leaving politics and patents out of it, is .net for linux. But they are desktop apps.

chris
+1  A: 
Mauricio Scheffer
+1  A: 

Media Center (some parts, mostly the interface)
Zune player (parts)
Expression Blend

lgratian
A: 

Nikon Capture NX for Windows requires .NET Framework, though clearly the entire thing is not managed code.

SourceGear Fault and Fortress clients.

Brian Reiter
+1  A: 

Clear Office Spreadsheet is written in .NET. It really looks like Excel

A: 

Novell's PlateSpin Migrate/Protect and Recon products all have .NET Desktop Clients. These are however, targeted towards the enterprise, rather than the consumer.

Disclaimer: I work there...

Nader Shirazie
A: 

Other way to complicate understanding of your code is writing critical parts in some exotic language like F#, IronScheme or other.

macropas
Since F# targets the .Net platform, it still compiles to MSIL. So you can still use Reflector to get C# code (the resulting code will use lots of lambda stuff, of course).
Groo
A: 

ComicRack would be an example. Family.Show is nice as well.

Botz3000
A: 

Some of the more modern utilities that Linn Products uses for managing its high-end audio system components are written in .NET

Lunatik
A: 

Instead of mentioning each .NET product you ever stumbled upon, let just remember everyone that Java is also running in a JVM and can be reverse engineered in the same way and for the same reason as .NET

And Java has been used everywhere from the desktop to the server in many different domains long before .NET was mature.

The obsession about R-E for "business"/"serious" (choose your favorite "I'm better than others" adjective) application is overblown.

I admit that code-stealing happens (however, that's often for small shaddy businesses than can do this without being noticed...otherwise PR damages are too great). But if someone wanna R-E your application, he will do it no matter how many protections you tried to add. A little protection is good, but going crazy other it is just stupid.

Ksempac
+1  A: 

I write a com interop plugin to a CAD system using VB.net. It easily handles all of the requisite 3D mathematics without having to resort to using the CAD engine functions. Originally it was written in VB6. I have to say that it is a joy using .Net instead of VB6. I am far more productive, the code is a lot cleaner and more loosely coupled. As some of the previous posters said, if you need some hard core performance you can always use c++ or c. If you develop on a windows environment, .Net should be your first choice (at least for the presentation and business layers).

Am I worried about reverse engineering, yes. But not enough to really jump through the obfuscation hoops. I feel it is much better to spend time improving the application instead of figuring out ways to protect it outside the basics. If people want it badly enough they will get it. My biggest concern with reverse engineering is revealing the proprietary algorithms that I have used. Again, most of our customers are not computer literate enough to make that a concern.

Cheers, Troy

Bluebill
A: 

The XNA Framework allows independent developers to write XBox 360 and Windows games in C# managed code. These are available commercially via XBox Live:

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

The fact that the game runs on the XBox platform makes it more difficult to reverse-engineer the code, but I suspect not impossible.

Rhys Jones