2009-07-01 10 views
15

I honsetly no puedo decir que he visto alguna vez una aplicación comercial que use .NET (aparte de los controles para desarrolladores/código abierto). Al ser tan fácil 'descompilar' una aplicación .NET usando RedGates .NET Reflector, me preguntaba si .NET estaba orientado hacia ASP.NET (ya que no se puede 'descompilar' porque el código se ejecuta en un servidor y no se almacena en el máquina de usuarios)?¿Alguien escribe aplicaciones de escritorio con .NET?

+18

Los idiomas de bytecode incluyen una gran cantidad de metadatos que pueden ayudar en la ingeniería inversa de las aplicaciones y dar lugar a herramientas como Reflector. Sin embargo, la división en dificultad para revertir una aplicación nativa y .net no es tan amplia. ¿Es un poco más fácil? Por supuesto. ¿La diferencia es lo suficientemente grande como para cambiar lo que escribe tu aplicación? De ninguna manera. Los ejecutables nativos se inclinan ante poderosas herramientas como IDA Pro. Con el complemento HexRays, incluso puedo obtener Reflector como pseudocódigo. – mmcdole

+2

@Simucal: Eso debería ser una respuesta (lo hubiera votado). – Kredns

+2

¿Hay algún ejemplo de alguien que realice ingeniería inversa en la aplicación de otra persona y realmente esté haciendo algo útil con los resultados? Parece un gran no problema para mí. – dkretz

Respuesta

25

Mi empresa crea aplicaciones de imágenes médicas en .NET 3.5 con WPF. Actualmente estoy desarrollando mi propia aplicación en .NET también.

Paint.NET está escrito, curiosamente, en código nativo. Estoy mentirosamente mintiendo sobre la oración anterior. Obviamente está escrito en .NET.

Es más frecuente de lo que piensas.

Como mencionó otra persona, puede usar un ofuscador para que sea más difícil para otros descompilar su aplicación. No es imposible, pero es más difícil, dicho esto, cualquier cosa puede ser descompilada/invertida con suficiente tiempo y recursos.

+2

Sí, también creamos aplicaciones de imágenes médicas en wpf. – mmr

+0

@mmr muy genial :-). ¡Es agradable ver a un compañero de imagen médica aquí! –

+1

Escribo software de diagnóstico médico en WinForms .NET. Aparentemente, .Net es muy popular en la industria médica. – NascarEd

4

La mayoría de los productos de Redgate son aplicaciones de escritorio .net

+1

Ha entendido mal mi pregunta. No se trata de RedGate pero el clima es normal, los desarrolladores cotidianos usan .NET para hacer aplicaciones de escritorio comerciales. –

+2

Creo que entendió la pregunta ... simplemente está usando la empresa que mencionas en tu publicación como ejemplo. –

8

Conozco las aplicaciones empresariales que usan .NET, aunque creo que la mayoría usa C++ administrado, que no se puede descompilar con Reflector.

Personalmente vendo una aplicación de Windows basada en .NET. Yo uso Eazfuscator.NET para ofuscar el código. Hay muchas herramientas comerciales y gratuitas que ofuscan el código .NET después de la compilación.

+1

La ofuscación no es un gran obstáculo para un RE competente. Cuando vas a invertir una aplicación .NET, ya asumo que está ofuscada y empaquetada, y esto aún no es suficiente. Pero esto también es cierto para los nativos. – mmcdole

+1

Estoy de acuerdo. La ofuscación ayuda a los usuarios que no son competentes y que simplemente retiran Reflector a verificar el código. –

+0

@Chris Thompson, definitivamente. Sería tonto ~ no ~ ofuscar una aplicación de código cerrado. – mmcdole

11

El Expression Studio Microsoft .NET es

Visual Studio .NET 2010 es

Puerta software Red es .NET (en su mayoría)

... también hay SharpDevelop (fuente abierta, aunque), y las herramientas Microsoft Pro Photo.

+1

Pero esas son en su mayoría herramientas de desarrollo que ya conoce de acuerdo con su pregunta: "... una aplicación comercial que usa .NET (luego otros controles para desarrolladores/código abierto) ...";) –

+0

Cuando dijo controles para desarrolladores/código abierto, supuse que se refería a los paquetes comerciales de control .NET como Telerik e Infragistics. –

5

Muchos productos de software comercial usan .NET. Uno de mis juegos favoritos, la serie Trainz de Auran, está escrito principalmente en .NET. Pero estoy de acuerdo en que una gran parte de su enfoque para .NET son las aplicaciones de negocios internas y las aplicaciones basadas en la web. Creo, sin embargo, que a medida que WPF gane tracción, empezará a ver muchas más aplicaciones de Windows que usan .NET como su lenguaje de back-end. Y como otros han dicho, hay una serie de herramientas disponibles para ayudar a ocultar su código. Pero si su preocupación es la ingeniería inversa, casi cualquier lenguaje de desarrollo puede ser de ingeniería inversa si alguien realmente quisiera.

3

El excelente software de edición de imágenes Paint.NET está escrito al 100% en el código administrado C#.

1

No hay que olvidar que F-Spot (gestor de fotos) y Banshee (música) se escriben tanto para funcionar en Mono, que, dejando a la política y las patentes a cabo de eso, es .net para Linux. Pero son aplicaciones de escritorio.

1

Media Center (algunas partes, sobre todo la interfaz)
jugador de Zune (partes)
Expresión Mezcla

0

Nikon Capture NX para Windows requiere .N ET Framework, aunque claramente todo no es código administrado.

clientes de SourceGear Fault and Fortress.

1

Borrar Office Spreadsheet está escrito en .NET. Realmente parece que Excel

0

Novell PlateSpin Los productos Migrate/Protect y Recon tienen todos .NET Desktop Client. Sin embargo, estos están dirigidos a la empresa y no al consumidor.

exención de responsabilidad: yo trabajo allí ...

0

Algunos de los servicios públicos más modernos que Linn Products utiliza para la gestión de los componentes del sistema de audio de alta gama están escritos en .NET

1

lugar de mencionar cada producto .NET alguna vez tropezó, dejar que sólo recuerda a todos que Java es también se ejecuta en una JVM y se puede realizar ingeniería inversa de la misma manera y por la misma razón que .NET

Y Java se ha utilizado en todas partes desde el escritorio hasta el servidor en muchos dominios diferentes mucho antes de que .NET estuviera maduro.

La obsesión por el R-E para el "negocio"/"grave" (elegir a su favorito "Estoy mejor que otros" adjetivo) aplicación es exagerada.

que admiten que código-robo ocurre (sin embargo, que es a menudo para las pequeñas empresas shaddy que puede hacer esto sin que se note lo contrario ... daños PR son demasiado grandes). Pero si alguien quiere R-E su aplicación, lo hará sin importar cuántas protecciones haya intentado agregar. Un poco de protección es bueno, pero volverte loco es simplemente estúpido.

1

que escribir un plugin de interoperabilidad COM a un sistema CAD utilizando VB.net. Maneja fácilmente todas las matemáticas 3D requeridas sin tener que recurrir al uso de las funciones del motor CAD. Originalmente fue escrito en VB6. Debo decir que es una alegría usar .Net en lugar de VB6. Soy mucho más productivo, el código es mucho más limpio y está menos relacionado. Como dicen algunos de los carteles anteriores, si necesitas un rendimiento de núcleo duro siempre puedes usar C++ o c. Si desarrolla en un entorno de Windows, .Net debería ser su primera opción (al menos para la presentación y las capas de negocios).

¿Estoy preocupado acerca de la ingeniería inversa, sí. Pero no lo suficiente como para saltar realmente a través de los aros de ofuscación. Siento que es mucho mejor dedicar tiempo a mejorar la aplicación en lugar de encontrar formas de protegerla fuera de los conceptos básicos. Si la gente lo quiere lo suficiente, lo obtendrán. Mi mayor preocupación con la ingeniería inversa es revelar los algoritmos propietarios que he usado. Una vez más, la mayoría de nuestros clientes no saben leer y escribir lo suficiente como para preocuparse por eso.

Cheers, Troy

0

El XNA Framework permite a los desarrolladores independientes para escribir Xbox 360 y Windows juegos en código C# gestionados. Estos están disponibles comercialmente través de Xbox Live:

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

El hecho de que el juego se ejecuta en la plataforma XBox hace que sea más difícil de realizar ingeniería inversa del código, pero no sospecha imposible.

0

Me gusta mucho la pregunta y siempre me he preguntado lo mismo. ¿Qué pasa si alguien por ahí podría descompilar y usar este código que he trabajado tan duro para terminar?
Dicho esto, he estado utilizando .Net idiomas en los últimos 7 años para todos los productos en los que he trabajado! podría ser descompilado? ¡POR SUPUESTO! pero, ¿debería enojarme si alguien puede usar mi código si trabajó lo suficiente para descompilarlo y luego entenderlo? ¡para mí, sería feliz si alguien dedicara tiempo y recursos para hacerlo! significa que soy lo suficientemente bueno! ¡también significa que estoy participando en la educación de alguien allí!
Por otro lado, para el momento en que alguien esté usando tu código, ¡supongo que estarías muy avanzado desarrollando cosas más avanzadas que incluso hubieras olvidado sobre el código anterior que escribiste hace un par de años!
Acabo de terminar de trabajar en un producto que se puede utilizar como un sistema de archivo, un sistema de gestión de recursos humanos y una gestión administrativa para medianas empresas y pronto estará en el mercado.
Como conclusión, diría: ¡el conocimiento debería estar disponible para todos aquellos que inviertan tiempo en buscarlo para usarlo! ¡Imagínese si algunos de los mejores científicos han muerto antes de que su conocimiento se extienda a todos nosotros!

Cuestiones relacionadas