Pregunta

¿Hay alguna manera de ocultar archivos ejecutables o bibliotecas basadas en C para evitar la descompilación?

¿Fue útil?

Solución

No. Puede que sea más difícil para descompilar pero no se puede evitar ella. Mi consejo es dejar de perder su tiempo y en lugar de concentrarse en la entrega de un producto fantástico con cada vez mejores características.

A continuación, la gente estará dispuesta a pagar por ello.

Su principal problema es que la única manera de hacer que su código no-descifrables es hacer que sea no-ejecutable. Cualquier cosa que se puede cargar en un PC puede ser violada. Las personas que hacen de ingeniería para la diversión, el beneficio o la fama inversa son generalmente muy bueno en él y que realmente no sea el más mínimo por etapas por cualquier cosa que haga para tratar de detenerlos.

No tienen acceso a las herramientas que hacen el trabajo de descifrar su código mucho más fácil que el trabajo que se ha ofuscar él :-) Es mucho mejor para convencer al mundo en general que su software es digno de la compra, y al ver la piratería como una oportunidad para convertir posiblemente "ladrones" a los usuarios genuinos.

Por ejemplo, averiguar ¿Por qué No están pagando por su software y tratar de arreglar eso. Nunca vas a convertir el 100% de la gente, algunos se piratear su código sólo por el gusto de hacerlo.

Salida de la serie de artículos que se ejecuta sobre el Techdirt respecto a CWF + RtB (conectar con los aficionados más razón comprar). He encontrado muchas de las cuestiones planteadas no podría ser aplicable a la industria del software.

Otros consejos

La manera fácil : Comprar un producto empacador / cifrador / ofuscador. Algunos son caros y se utilizan en los juegos, algunos no lo son. Google para ellos por palabras de moda como "protección de copia", etc.

La manera rápida UPX y luego el mangle header algún lugar por lo que todavía se carga en memoria y ejecuta bien, pero la utilidad UPX fallará con un error (probar el campo de versión). 95% va a renunciar si falla la utilidad UPX.

La forma más dura : Escribir su propio empaquetador

.

Ah, me olvidaba:

real manera fácil : Sólo enviarlo como es. No realmente - lo que lo hace la gente todavía puede aplicar ingeniería inversa a su código. La cantidad de esfuerzo que puso en tan sólo restringe ¿cuántos pueden revertirla.

compilar con optimización completa.

"ejecutables ofuscado" no tiene ningún sentido. El hardware tiene que ser capaz de "comprender" el código en el poder para ejecutarlo, y el hardware puede entenderlo, un ser humano ingeniería inversa puede entenderlo. Lo más que se puede hacer Habrá que sea más tediosa de entender, pero probablemente no por mucho, ya un costo.

Para hacer más difícil? Seguro. Por favor, no hacer eso.

Para evitarlo? No. Cualquier sistema que se va a ejecutar su binario necesitará el software para descifrar cualquier esquema que ocurra. Y que será capaz de descompilar eso y luego ver cómo va a interpretar los binarios oscurecidos.

Creo que si se habla de binario compilado no hay mucho que puede hacer, (tal vez sólo se aplican UPX o una herramienta relacionada) que no tiene una gran cantidad de SENCE, ya que puede ser revertida.

Si se habla de escribir nuevo código, intente Auto Modyfing C Código que probablemente sea la forma más difícil de re ingeniería de su aplicación.

Compilar código C con un compilador de optimización hace que sea imposible recuperar el código fuente original ni nada que se le parezca ni remotamente. Es mucho más seguro que cualquiera de las ofuscadores Java o .NET que son populares en estos días. Asegúrese de quitar el ejecutable si quiere hacerlo más pequeño y ocultar los nombres de símbolos antes de la liberación. Sin embargo, observe que esto también hace que la depuración ( cuando la aplicación se bloquea) prácticamente imposible.

A pesar de ello, si alguien realmente quiere piratear el software, lo hará en la planta de montaje, posiblemente con el software cargador u otro engaño - no importa lo que tratar de hacer para evitar que él. Muchas empresas han intentado, pero ninguno ha tenido éxito. El uso de hacks así sólo frustrar el usuario final, ya que pueden bloquear la aplicación o incluso bloquear el depurador integrado de Ventanas.

dejar de perder el tiempo pensando en la ofuscación, mientras que usted debe mejorar el programa en su lugar.

descompilación ( No más Gotos ) y tanto en la práctica la ofuscación ( Flowtables ) y la teoría (indistinguishability ofuscación) son áreas activas de investigación y por lo tanto hay - hay soluciones únicas herramientas, técnicas y conocimientos. Si realmente quiere que su código sea impermeable a decomplilation, crear una aplicación web, y poner el lado sensible servidor de códigos. Pero si usted está atascado con el modelo de dar a alguien un binario, entonces debe juzgar con prudencia la disyuntiva desea realizar entre la seguridad y el rendimiento. La ofuscación tiene un costo, y aún así nunca es perfecta. Algunas opciones

  • Use un empacador que no sea UPX (UPX viene instalado en muchas distribuciones de Linux). El costo de rendimiento es bajo y la mayoría de la gente no tiene las habilidades para descomprimir manualmente un binario para el análisis estático. Pero a inversores con experiencia, el costo de desembalaje es inmaterial
  • Salida Tigresa, un dispositivo de virtualización / Ofuscador diversificar con avanzadas funciones para el C ofuscación de código-fuente. Para un mejor rendimiento, se basan en las transformaciones de apoyo, aplanamiento flujo de control, la función de fusión / división, la codificación literal
  • Si desea una protección aún mayor, echa un vistazo a las grandes transformaciones de Tigress:. Virtualización, JITing, etc, pero estoy bastante seguro de estos son más caros y sus usuarios pueden notar una desaceleración si utiliza estas transformaciones

No se desanime por el trabajo seminal de Barak et al en la imposibilidad del cuadro de ofuscación negro. Él sólo demuestra la imposibilidad de ofuscadores de caja negra, no la imposibilidad de muchas confusiones prácticos y útiles. (Siendo el funcionamiento interno del programa de ofuscación Negro caja son completamente ininteligible) Además, no se desanime por los piratas. Siempre hay personas que lo hacen un punto para comprar su producto si es bueno.

¿Por qué ofuscar el código si hay un beneficio comercial de ella? Para ser honesto, supongamos que el código de comercio se ha optimizado bastante y ofuscado, y funciona, entonces la madre de una cosa embarazosa todo sucedió - una falla .... le pegan en mi humilde opinión, ya que el código binario de producción se ofusca, por lo que es más difícil de de depuración en el que el fallo está ocurriendo y difícil de replicar, se ha quedado atascado en la lista FALLOS para siempre ...

Por ejemplo, tratando de encontrar el seguimiento de la pila, que va a terminar con la pérdida de más pelos que nunca tratando de averiguar el código dis-ensamblados para elaborar WTF está ocurriendo allí, interminables resmas de bucles espagueti. En resumen, no!

Usted va a terminar con la pérdida de dinero en tratar de depurar el problema técnico ... ya sea que usted tiene que ser un experto en ensamblador brillante para leer la memoria vertederos y trabajar hacia fuera desde el código ofuscado ... No lo tire de distancia, acaba de obtener su hermoso trabajo producto y lo venden ... Claro, hay un montón de personas que tienen tiempo en sus manos para romperlo por el código de ingeniería inversa ...

El secreto para vencer a que está siguiendo el principio - comunicado de frecuencia, la liberación a menudo , hacer mejoras después de que suelte a menudo, de ese modo serían las últimas y mejores características más al día, entonces el tiempo que le toma a un cracker de desmontar y funcionó! Mirar el código fuente de Linux, los parches vienen en, entonces se libera ... si se mantiene este principio en mente, mediante la liberación de una nueva versión con más características a un ritmo mucho más rápido que usted está ganando!

Una forma de hacer las cosas un poco más difícil es el paquete de ellos. UPX va a empacar sus binarios que hace que sea más difícil de descompilar fuera de la caja. Técnicamente es posible descomprimir y luego descompilar pero va a subir el listón un poco. Suponiendo que se está ejecutando en un sistema operativo de usuario de vainilla no hay mucho que puede hacer para prevenir la descompilación sin usar trucos sucios.

Si realmente quiere jumble arriba se necesita un programa separado para hacerlo. Como desarrollador escribe el código en la forma más limpia y más legible. Mensaje compilación se ejecuta la aplicación por separado a la ofuscación. Usted puede comprar este tipo de aplicaciones por alrededor de $ 100K.

Si su intención es detener el código de ser revertido ingeniería que probablemente va a funcionar. Si su intención es impedir que alguien se agriete la seguridad, entonces la ofuscación por sí sola no va a detener a un atacante determinado. En algún momento hay un sí / ninguna decisión que no es necesario para entender el código para encontrar que ni eludir a él.

compilador Tiny C modificado para producir código ofuscado: http://blogs.conus.info/node/58

Para proporcionar algún apoyo teórico para las respuestas aquí: en 2001 Barak et. al. demostró que el programa de ofuscación es imposible en general.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top