2010-03-05 17 views
11

Estamos pensando en ofuscar algunos códigos antes de liberarlos a los clientes. Nos preguntamos sobre el impacto que tendrá en el soporte técnico. ¿Pueden los clientes proporcionarnos rastros de pila significativos o se ofuscarán también?Obfuscator & Tech Support

Espero con interés escuchar su experiencia. Gracias por adelantado.

Respuesta

9

obtienes restos de pila. pero los ofuscadores pueden generar archivos de mapeo que mapean nombres ofuscados a nombres reales ... debes mantener estos archivos de mapeo en un lugar seguro y puedes usarlos para "desofuscar" los rastreos de la pila nuevamente cuando sea necesario.

en el caso del soporte técnico: puede crear una interfaz web simple donde la gente de soporte técnico pueda pegar los rastros de pila. De esta forma, solo el servidor web necesita acceso a los archivos de mapeo para que pueda restaurar los rastreos originales de la pila.

aquí hay dos enlaces que explican el proceso con la Ofuscador Dotfuscator:

http://www.preemptive.com/images/stories/dotfuscator_documentation/Dotfuscator/The_Map_File.html

http://www.preemptive.com/images/stories/dotfuscator_documentation/Dotfuscator/Decoding_Obfuscated_Stack_Traces.html

+2

Como se indicó, los rastros de pila sin obscurecer están disponibles en la mayoría de las herramientas (por ejemplo, http://www.ssware.com/cryptoobfuscator/obfuscator-net).htm) –

+0

A veces creo un servicio web para recibir informes de fallas. El usuario puede enviar un botón "enviar informe de error" y el seguimiento de la pila y otra información útil sobre el estado del programa pueden transmitirse sin riesgo de que el trazado de la pila esté codificado en el formato de texto incorrecto (ya que muchos ofuscadores usan caracteres Unicode para clase/método nombres). –

1

Si los métodos en la pila están ofuscados en su versión, obtendrá los nombres de métodos ofuscados en cualquier traza de la pila.

Si incluye algo en su código para ayudarlo a descubrir qué métodos estaban involucrados, los posibles hackers pueden usar esa información para obtener una mejor comprensión de su código.

Una estrategia común es ofuscar solo parte del código, incluidas (pero no limitadas a) las partes que controlan la licencia. Si confunde SIMPLEMENTE los controles de licencia, es bastante fácil concentrarse en la parte que necesita la atención de un hacker.

+0

Me pregunto si la empresa puede retener un registro de ofuscación de la ofuscación en el código fuente que pueden usar internamente para llegar al lugar real donde se produjo el error. –

+0

Vea el comentario de Nissan Fan. Su herramienta debería poder desofuscar el seguimiento de la pila ... SI lo obtiene como un archivo adecuadamente codificado. Muchos ofuscadores usan caracteres Unicode para nombres de clases y métodos para que sea particularmente difícil de leer en la pantalla. Dada solo una captura de pantalla o un archivo de texto no unicode, será difícil volver atrás. A veces creo un servicio web para registrar errores para asegurarme de que el programa envía todo lo que necesito para diagnosticar un error. Ese sería un método seguro para obtener el seguimiento de pila codificado correctamente (unicode). –

1

esto no suele ser un problema ya que la mayoría de ofuscadores proporcionan capacidad de des-obfuscate pila se remonta a su rastro original

1

Utilizamos BitHelmet. El problema es que cuando se usa la técnica de ofuscación más fuerte, la traza de la pila no se puede desofuscar. BitHelmet usa el cambio de nombre completo (algún tipo de inducción de sobrecarga, solo que mejor). Lo que sucede es que muchos métodos terminan con el mismo nombre pero con diferente tipo de devolución (esto no se puede hacer en C#, pero está bien para CLR). ¡Los tipos de devolución no se muestran en los rastros de pila! por lo que no es posible desofuscar la traza de la pila utilizando la ofuscación más fuerte.

Le hicimos la misma pregunta que usted, la discutimos y llegamos a la conclusión de que en realidad preferimos la mejor ofuscación. Las huellas de pila en realidad no son tan útiles cuando se brinda asistencia técnica como otros datos que solo el usuario final puede proporcionar. "¿Por favor dime exactamente qué estabas haciendo?" :)