it-swarm-es.com

¿Alguna solución integral para la protección de código binario y la ingeniería anti-inversa?

¿Alguien sabe de buenos productos con características completas de endurecimiento binario y anti-ingeniería inversa? O mejor, ¿alguien ha visto una revisión independiente que compare los productos que realizan este tipo de protecciones de código binario? Solo he encontrado uno o dos que ofrecen soluciones integrales:

  1. Arxan GuardIt http://www.arxan.com/software-protection-products/index.php
  2. PikeWerks http://pikewerks.com

De estos, incluso Arxan parece el más completo en términos de sus mecanismos de protección. Los tipos de características que busco incluyen:

  • protección contra ingeniería inversa
  • protección contra ataques BORE (se rompe una vez que se ejecuta en todas partes)
  • protección contra la manipulación
  • protección contra modificaciones binarias

Para proporcionar estas características, los productos implementarían muchas técnicas diferentes en las categorías más amplias de:

  • ofuscación binaria estática y dinámica
  • maquinas virtuales
  • cifrado estático y de tiempo de ejecución
  • sumas de control y sincronización
  • anti-depuración
  • autenticación

Por ejemplo, para implementar la ofuscación binaria estática, el producto debe ofrecer muchas técnicas diferentes, desde el cambio de nombre constante constante y de exportación hasta el cambio de ruta, la inserción de código falso y otros. Para una buena referencia, consulte el documento de Andrew Griffith sobre Esquemas de protección binaria en felinemenace.org .

No sé mucho sobre PikeWerks, pero me gusta cómo suena el producto de Arxan, ya que se integra convenientemente en un entorno de construcción, por lo que no se requiere código personalizado. Además, parece tener capacidades no solo para defender sino para detectar y reaccionar a los ataques.

* Actualización * Debería haber enumerado los requisitos de la plataforma: Linux, x86, x64, Java, C y C++.

18
Weber

Cuanto más invierta en proteger su binario de las galletas:

  • cuanto menos del costo de su proyecto se invierta en agregar valor para el cliente
  • cuanto más costoso sea su producto, alejando a los clientes legítimos
  • cuanto más tiempo tenga en el mercado, lo que permitirá que un competidor menos conservador ejecute más rápido

Las máquinas virtuales son parte integrante de la forma en que se ejecutan los departamentos de TI ahora. Evite ejecutar en un VM y evite vender su producto a una parte del mercado.

La prueba de manipulación/autenticación probablemente debería ser manejada por una característica del sistema operativo: sé que Windows, Mac OS y muchas plataformas de teléfonos inteligentes ya lo admiten. Mi principal área de especialización es OS X, que tiene una bandera de "matar" de modo que un proceso que no se firma puede suicidarse voluntariamente. Una aplicación puede probar su propia firma, lo que viene con la condición de que si su aplicación ha sido descifrada, puede asumir que la prueba también se ha cambiado o eliminado.

Las técnicas de ofuscación/cifrado no valen nada: en algún momento la CPU tiene que ver las instrucciones que realmente necesita ejecutar, y en este momento esas instrucciones pueden ser desechadas para dar como resultado el binario "limpio".

9
user185

Resumiendo todas las respuestas anteriores: es imposible proteger su aplicación con una garantía del 100%. Si el software es bueno, se romperá tarde o temprano, si la protección es difícil, se cardará (se comprará ilegalmente, pero con licencia legal) y se encontrará la forma de ejecutar su software sin pagarlo. Solo mire a IDA Pro: creo que el autor de este software realmente sabe cómo proteger su software, sin embargo, podemos encontrar versiones crackeadas en todo Internet. Entonces, si desea comenzar a vender su programa, prepárese para la carrera eterna entre crackers y desarrolladores, que están tratando de pensar qué hacer el próximo lanzamiento para cambiar/mejorar la protección.

Sin aspectos filosóficos de la protección binaria, generalmente se utilizan varios métodos de protectores:

  • vinculación a hardware;
  • Controles CRC;
  • Punto de entrada original oculto;
  • diferentes trucos para desempacar: aplicar algoritmos inusuales para desempacar;
  • importación y otras secciones dañinas;
  • diferentes trucos anti-depuración a través de errores de depuración;

Todo eso se puede pasar por alto. Y además de eso, ralentiza su software, a veces conduce a nuevos errores y problemas de inestabilidad.

Lo que los desarrolladores suelen aplicar a su software:

  • mezcla de código (codificación), ofuscación;
  • cifrado de aplicaciones;
  • uso de seudocódigo;
  • errores deliberados apareciendo a través de EH;

De nuevo, de cualquier manera es capaz de eludir esta protección. Sin embargo, el cifrado parece ser la mejor solución y más aconsejable hoy en día. Pero podría ser difícil de implementar de forma segura, además, puede ralentizar significativamente el software.

Y finalmente software de protección. Por lo que he escuchado que es bueno:

No profundizaré en la observación de cada uno de los programas mencionados anteriormente, debe hacerlo por su cuenta. Si está considerando comprar una licencia de uno de esos protectores, piense detenidamente en su esfuerzo, posibles problemas con respecto a las protecciones.

6
anonymous

Yo uso SLP Server de InishTech. http://www.inishtech.com Anteriormente fue desarrollado por Microsoft y se convirtió en una empresa de terceros.

SLP es una tecnología que protege el software que se ejecuta en plataformas Windows y aborda muchas, si no todas, sus preocupaciones. Me he estado comunicando con su representante de ventas y tienen algunos planes rentables para pequeños desarrolladores, startups e implementaciones personalizadas del software.

También maneja licencias de software, medición y prueba antes de comprar junto con la protección del código base.

4
goodguys_activate

Comenzaré diciendo que no hay una forma garantizada de hacer cumplir estas cosas. Mi recomendación es que no envíe sus algoritmos personalizados al cliente, manténgalos en un servidor que esté bajo su control.

2
Woot4Moo

Los productos que ha identificado hacen lo que dicen que harán, pero lo que dicen Woot4Moo y Graham Lee es cierto. No se puede evitar la ingeniería inversa. No es una discusión filosófica, es una realidad simple. Las personas que lo hacen mejor parecen ser los malos, hasta ahora, pero todo lo que cualquiera puede esperar es ralentizar un ataque.

¿Qué estás tratando de sacar de eso? Si simplemente está protegiendo su IP, olvídalo. Si el mecanismo central es de alto secreto, no coloque la aplicación en el dominio público. Si simplemente está tratando de frenar a los malos, use una de esas aplicaciones que ya mencionó.

Pero solo recuerde: no crea que no será pirateado y no prometa nada por el estilo a las partes interesadas :-)

2
Rory Alsop

Lo que está tratando de hacer no es solo un problema difícil de resolver, es un problema probablemente imposible de resolver. Si entrega el programa a un usuario que tiene el control completo de su propio entorno operativo, simplemente no puede controlar cómo se ejecutará. No solo es difícil, es imposible.

Puede hacer que sea más difícil para él hacerlo, pero cada una de estas tácticas y técnicas tiene un costo, y de una manera muy real disminuye el valor general de su software para el consumidor, como se explica en otras respuestas.

En cambio, si está preocupado, debe enfocarse en un servicio de valor agregado que conecte a sus clientes que pagan con un sistema sted control, no ellos. Si los usuarios obtienen un valor adicional al vincular su software a alguna cuenta externa (por ejemplo, una cuenta en su servidor), puede usar ese enlace para ayudar a identificar positivamente a sus clientes que pagan.

2
tylerl

Muy de acuerdo con los otros pósters, @Graham, @Rory, @Ams, etc.
Esto solo lo hará más difícil y evitará la piratería casual. Si alguien realmente quiere obtener su código, lo hará. En el peor de los casos, pueden adjuntar un depurador y obtener el código de máquina descifrado.

Agregaré otra muy buena: SmartAssembly de Red-Gate .

0
AviD