¿Soluciones integrales para la protección de código binario y la ingeniería inversa? [cerrado]

18

¿Alguien sabe de buenos productos con características integrales de endurecimiento binario y de ingeniería inversa? O mejor aún, ¿alguien ha visto una revisión independiente comparando productos que realizan estos tipos de protecciones de código binario? Solo he encontrado uno o dos que ofrecen soluciones integrales:

  1. Arxan GuardIt enlace
  2. PikeWerks enlace

De estos, incluso Arxan parece el más completo en términos de sus mecanismos de protección. Los tipos de funciones que estoy buscando incluyen:

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

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

  • ofuscación binaria estática y dinámica
  • máquinas virtuales
  • cifrado estático y en tiempo de ejecución
  • sumas de comprobación y tiempo
  • anti-depuración
  • autenticación

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

No sé mucho acerca de PikeWerks pero me gusta cómo suena el producto de Arxan como si se integrara convenientemente en un entorno de compilación, por lo que no se requiere un código personalizado. Además, parece tener capacidades no solo para defender sino también para detectar y reaccionar ante los ataques.

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

    
pregunta Weber 09.12.2010 - 19:06
fuente

7 respuestas

9

Cuanto más inviertas en proteger tu binario de los crackers:

  • la menor parte del costo de su proyecto se está invirtiendo en agregar valor para el cliente
  • cuanto más caro se vuelve su producto, ahuyenta a los clientes legítimos
  • cuanto más tiempo llegue al mercado, permitiendo que un competidor menos conservador se 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 correr en una máquina virtual y evita vender su producto a una parte del mercado.

La autenticación / prueba de manipulación indebida 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 marca de "muerte" de tal manera que un proceso que no se firma puede voluntariamente suicidarse. Una aplicación puede probar su propia firma, que viene con la condición de que si su aplicación ha sido resquebrajada, puede asumir que la prueba también se ha cambiado o eliminado.

Las técnicas de ofuscación / encriptación no tienen ningún valor: en algún momento, la CPU debe ver las instrucciones que realmente necesita ejecutar, y en este momento se pueden descartar esas instrucciones para obtener el binario "limpio".

    
respondido por el user185 09.12.2010 - 23:19
fuente
6

Resumiendo todas las respuestas anteriores: es imposible proteger su aplicación con una garantía del 100%. Si el software es bueno, tarde o temprano se resquebrajará, si la protección es difícil, entonces se cardará (se comprará ilegalmente, pero con licencia legal) y se encontrará la manera de ejecutar su software sin pagar por ello. Solo mire IDA Pro. Creo que el autor de este software realmente sabe cómo proteger su software, sin embargo, podemos encontrar versiones agrietadas en todo el Internet. Por lo tanto, 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 en la próxima versión para cambiar / mejorar la protección.

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

  • enlace a hardware;
  • controles CRC;
  • Ocultación del punto de entrada original;
  • diferentes trucos de desempaquetado: aplicación de algoritmos de desempaquetado inusuales;
  • importación y otras secciones dañinas;
  • diferentes trucos anti-depuración a través de errores del depurador;

Todo eso se puede omitir. Y además, ralentiza el software, a veces conduce a nuevos errores y problemas de inestabilidad.

Lo que los desarrolladores suelen aplicar a su software:

  • mezcla de códigos (aleatorización), ofuscación;
  • cifrado de la aplicación;
  • uso de pseudocódigo;
  • errores deliberados apareciendo a través de EH;

Nuevamente, de cualquier manera es capaz de eludir estas protecciones. Sin embargo, el cifrado parece más conveniente y la mejor solución hoy. Pero podría ser difícil de implementar de forma segura, además, puede ralentizar significativamente el software.

Y finalmente el software de protección. De lo que he oído ser bueno:

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

    
respondido por el anonymous 10.12.2010 - 12:23
fuente
4

Uso el servidor SLP de InishTech. enlace Anteriormente fue desarrollado por Microsoft y se convirtió en una compañía 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, nuevas empresas y despliegues personalizados del software.

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

    
respondido por el random65537 10.12.2010 - 16:17
fuente
2

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.

    
respondido por el Woot4Moo 09.12.2010 - 22:49
fuente
2

Esos productos que has identificado hacen lo que dicen que harán, pero lo que Woot4Moo y Graham Lee dijeron es cierto. No se puede evitar la ingeniería inversa. No es una discusión filosófica, es una realidad simple. Hasta ahora, las personas que lo hacen parecen ser los malos, pero todo lo que cualquiera puede esperar es frenar un ataque.

¿Qué estás tratando de salir de esto? Si simplemente estás protegiendo tu IP, olvídalo. Si el mecanismo principal es de alto secreto, no ponga la aplicación en el dominio público. Si simplemente intentas ralentizar a los malos, usa una de las aplicaciones que ya mencionaste.

Pero recuerde, no crea que no será pirateado, y no prometa nada de ese tipo a las partes interesadas :-)

    
respondido por el Rory Alsop 10.12.2010 - 10:04
fuente
2

Lo que estás tratando de hacer no es solo un problema difícil de resolver, es un problema probablemente imposible para 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 hacerlo más difícil para él, pero cada una de estas tácticas y técnicas tiene un costo, y de manera muy real disminuye el valor general de su software para el consumidor, como se explica en otras respuestas.

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

    
respondido por el tylerl 12.12.2011 - 02:54
fuente
0

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

Agregaré otro muy bueno: SmartAssembly de Red-Gate .

    
respondido por el AviD 11.12.2010 - 22:17
fuente

Lea otras preguntas en las etiquetas