2011-03-08 14 views
5

¿La ofuscación solo tiene que ver con el engrosamiento de los nombres de las variables/miembros no públicos? Si es así, ¿no sería posible escribir una aplicación que al menos podría cambiar estos nombres más leíbles como "variable1", etc., y luego extraer todo el código que todavía se puede compilar?Cómo invertir la ofuscación en .NET?

+1

Por supuesto que es posible. Por lo general, se llama ingeniería inversa/desensamblar/descompilar, etc. (si está buscando una herramienta). – stefan

+0

Para ver un ejemplo de una herramienta de este tipo, consulte http://de4dot.com/ – gregmac

Respuesta

8

No, se trata de mucho más, especialmente con los ofuscadores más sofisticados. Pueden producir IL que no se puede expresarse en la mayoría de los idiomas, y donde el flujo lógico está horriblemente enredado para confundir a las mejores herramientas. Con montones de tiempo puedes hacerlo (probablemente muchos a mano), y ciertamente hay una carrera de armamentos entre los ofuscadores y los desofuscadores, pero subestimas enormemente la tecnología aquí.

Además, tenga en cuenta que muchos ofuscadores miran una aplicación completa (no solo un ensamblaje), por lo que también pueden cambiar la API pública.

+0

Esto suena genial, ¿tienes un enlace para esto? Suena completamente rad! – stefan

+0

@stefan echa un vistazo a http://brajeshmahor.blogspot.com/2010/11/code-security-net-obfuscation.html – BrokenGlass

+0

@BrokenGlass que no hace nada de lo que escribió Marc Gravell. Y yo no supongo que puedas obtener un código 1: 1, sino una pieza de código compilable y fácil de analizar. – stefan

1

Ofuscación se trata de cambiar nombres significativos como accountBalance a los sin sentido como a1. La aplicación obviamente seguirá funcionando, pero será más difícil de entender los algoritmos que contiene.

+1

Esa es una (estúpida) forma de ofuscación yup. Imagina que estás drogado con LSD y aún así haces que las cosas funcionen. Eso es una buena ofuscación. – stefan

+0

LOL, gran comentario. –

1

Depende de la tecnología de ofuscación utilizada. El nombre de variable obstructivo es solo una parte del problema. Muchas herramientas de ofuscación realizan algún tipo de ofuscación de flujo de programa al mismo tiempo, lo que complicará aún más la comprensión del código. Al final, el IL ofuscado no se podrá expresar fácilmente (si es que lo hace) en la mayoría de los lenguajes de programación.

Renombrar las variables y los campos tampoco te ayudará mucho, ya que tener muchas variables1, variables2 ... no te ayudará a entender lo que lees.

2

Ese es ciertamente el start de un ofuscador. Aunque algunos ofuscadores también encriptarán cadenas y otros trucos para que sea muy difícil aplicar ingeniería inversa al conjunto.

Por supuesto, ya que el tiempo de ejecución necesario para ejecutar el montaje después de todo esto, es posible que un hacker decidido a técnicas de ingeniería inversa :)

1

Hay 'Deobfuscator' herramientas para deshacer varias técnicas de ofuscación como Descifrar cadenas, Eliminar métodos proxy, Devirtualizar código virtualizado, Eliminar código anti-depuración, Eliminar clases basura, Restaurar los tipos de parámetros y campos del método y más ...

Una herramienta muy poderosa es de4dot.

Pero hay more.