2009-05-26 16 views
6

He visto mucha discusión aquí sobre la protección contra copia. Estoy más interesado en anti-inversión y protección de IP.C++ Protección de la propiedad intelectual/Anti-Reversing

Existen soluciones como Safenet y HASP que afirman encriptar el binario, pero ¿están protegidas contra la inversión cuando se usan con una clave válida?

¿Qué tipos de estrategias se pueden utilizar para ofuscar el código y deshacerse de los reversores? ¿Hay alguna implementación comercial decente por ahí?

Sé que la mayoría de los esquemas de protección se pueden descifrar, pero el objetivo aquí es retrasar la capacidad de revertir el software en cuestión, y hacerlo mucho más obvio si otra empresa intenta implementar estos métodos.

+0

Supongo que "invertir" significa "ingeniería inversa" (también conocida como descompilar)? – StaxMan

Respuesta

7

Hay soluciones tales como Safenet y HASP que pretenden cifrar el binario, pero estas son protegidos de marcha atrás cuando se utiliza con una clave válida?

No. Un ingeniero inverso dedicado puede descifrarlo, porque el sistema operativo tiene que poder descifrarlo para poder ejecutarlo.

Personalmente, no me preocuparía.Es cierto que no sé nada sobre su negocio, pero me parece que la ingeniería inversa C++ es relativamente difícil en comparación con idiomas como Java o .NET. Eso será suficiente protección para despedir a todos los atacantes menos decididos.

Sin embargo, un atacante determinado siempre será capaz de superar cualquier cosa que poner en práctica, porque en algún momento tiene que ser convertido en un grupo de instrucciones de la CPU y ejecutado. No puedes evitar que lo lean.

Pero eso es un lote de esfuerzo para un programa no trivial. Me parece mucho más probable que alguien pueda crear un competidor después de ver su programa en acción (o incluso solo de su material de marketing). Probablemente sea más fácil que tratar de aplicar ingeniería inversa al suyo, y evita cualquier posible problema legal. Eso no es algo que puedas (o debas) prevenir.

6

contratar a algunas de las personas con las que he trabajado a lo largo de los años, ¡ofuscarán por completo el código fuente!

+3

Ofuscar el código fuente no ayudará mucho a dificultar la ingeniería inversa. Eso es porque los compiladores probablemente optimizarán la mayoría de las ofuscaciones equivalentes funcionalmente. –

+0

@Eduard - ¡Gabriel Munteanu, la gente con la que trabajé podría confundir incluso a los mejores compiladores! –

+0

Lo sentimos, no pude resistir: http://www.youtube.com/watch?v = B2Je1CEPkUM –

1

es casi imposible ocultar verdaderamente código de tal manera que sea totalmente imposible de realizar ingeniería inversa.

Si fuera posible, entonces el virus informático sería absolutamente imparable, nadie podría saber cómo funcionan y qué hacen. Hasta que podamos ejecutar código encriptado, el cifrado en cierto punto se descifra y es "legible" (como en, alguien que puede leer código de máquina) antes de que pueda ser ejecutado por la CPU.

Ahora, con eso en mente, puede suponer sin temor a equivocarse que la protección económica defenderá a los hackers más baratos. Leer barato como en "no es bueno", no tiene relación alguna con el precio que pagas. La gran protección se defenderá de los grandes hackers, pero la protección final no existe.

Normalmente, cuanto más comercial es su solución, más "conocidos" son los vectores de ataque.

Además, tenga en cuenta que cosas como las aplicaciones cifradas implican una sobrecarga adicional y molestan a los usuarios. Los dongles USB también molestan a los usuarios porque tienen que llevarlo a cabo y costar una fortuna para reemplazar. Por lo tanto, también se convierte en una compensación entre usted y el hecho de que haya estado protegido contra un puñado de piratas informáticos y todos sus clientes, lo que tendrá que soportar los obstáculos que conlleva su método de protección.

+0

"todos sus clientes que tendrán que soportar los obstáculos que su método de protección conlleva", la mayoría de las veces, sí, pero si hablamos de juego multijugador, la mayoría de los jugadores que no hacen trampas aprecian la protección contra los tramposos (y para este tipo de protección, cada bit cuenta) –

1

Hay dos áreas principales en esto:

  1. ofuscación - a menudo significa el cambio de nombre y pelar símbolos. Algunos también pueden reorganizar el código mediante transformaciones de código equivalentes. Los empaquetadores ejecutables también suelen emplear lógica anti-depuración.
  2. Protección de nivel inferior: esto significa la programación a nivel de kernel o hardware. Se ve en rootkits como Sony, nProtect, protección de copia de CD/DVD.
1

Claro, usted puede ir a todo tipo de longitudes inteligentes para tratar de derrotar a los depuradores/retardo y la ingeniería inversa. Como han dicho otros, no detendrá a un atacante determinado, ni un período ... y una vez que se piratee su aplicación, puede esperar que esté disponible de forma gratuita en línea.

estado Ustedes dos objetivos de su esquema de protección deseado:

1) hacen que sea difícil de realizar ingeniería inversa. 2) Que sea blatent alguien te está estafando.

Para # 1, cualquier ofuscador/depuración detector/etc esquema tendrá al menos algún impacto. Francamente, sin embargo, la reducción del% de ingenieros que alguna vez han profundizado en la salida del compilador significa que el código compilado C/C++ es un código ofuscado para muchos.

Para # 2, a menos que tenga un algoritmo/proceso específico y jurídicamente protegido que usted está tratando de proteger, una vez que la aplicación está diseñada inversa que está hundido. Si está legalmente protegido, ya ha publicado los detalles protegidos, entonces, ¿qué está tratando de obtener?

En general, creo que esta es una forma difícil de "ganar" y que es mejor que arregle esto en el "lado comercial", es decir, haga que su aplicación sea una suscripción o cargue mantenimiento/soporte ... pero los detalles dependen obviamente de tus circunstancias.

1

Tiene que establecer un límite de hasta dónde va a ir a proteger su código. Mire el mercado y lo que está cobrando por su solución. Nunca asegurará su producto al 100%, por lo que debe evaluar qué método le brindará la mejor protección. En la mayoría de los casos, bastará con una clave de licencia simple y sin ofuscación.

Retrasar la ingeniería inversa solo 'retrasará' lo inevitable. Lo que necesita enfocarse es disuadir el intento inicial de violar derechos de autor/IP. Un buen aviso legal de Términos y condiciones en la página Acerca de, o un aviso de copyright en negrita advirtiendo que cualquier intento de ingeniería inversa del código dará como resultado un pico a través de la columna vertebral ...

La mayoría de las personas retrocederán intentando para arrancar algo si existe la posibilidad de que se les sirva alguna acción legal.

Utilizamos SafeNet y nuestros clientes lo ven como una protección 'oficial'. Eso en sí mismo es un buen elemento de disuasión.