2010-03-03 17 views
16

duplicados posibles:
How do you protect your software from illegal distribution?
Best practice to prevent software copy¿Cómo proteger su código de software?

situación hipotética:

digamos que he construido un producto de software desde cero y lo hace cosas maravillosas. El único problema es que, una vez que alguien mira el código, lo entenderán muy fácilmente y pueden construirlo ellos mismos fácilmente.

Ahora, la cosa es que construí el código desde el cero al 100% y utiliza una combinación de llamadas API. Nadie más está involucrado en el desarrollo del código.

Si quiero vender este producto, ¿cuál es la garantía de que alguien mucho más inteligente que yo realizará una ingeniería inversa de todo el asunto y obtendrá un mejor producto?

En este momento estoy pensando en fragmentar todo el código. Agregando muchos códigos redundantes y toneladas de comentarios.

¿Hay algún software que encripte el código de software, que hará que la depuración, solución de problemas y la comprensión de cómo funciona el código sea prácticamente imposible? y sin embargo, se ejecuta como de costumbre? para que el desarrollador pueda tener tranquilidad?

+9

La gente del hombre está obsesionada con cosas como esta. – ChaosPandion

+0

Podría ser útil si menciona el idioma con el que está trabajando ... –

+28

Lo bloqueo en el cajón de mi cómoda. al lado de mis calcetines. De esa manera está protegido Y cálido. –

Respuesta

22

Muy pocas cosas en un programa son realmente novedosas. Casi todo lo que es probable que pongas en tu código, alguien más podría inventar por su cuenta. En general, es más fácil de lo que podrían aprender leyendo tu código. Leer el código es más difícil que escribirlo, y a la mayoría de los programadores en realidad no les gusta hacerlo de todos modos.

Por lo tanto, es mucho más probable que miran su aplicación y piensen "Yo podría hacer eso", luego "¡Qué bueno, leeré el código y luego lo copiaré!". Incluso si lo entienden, seguirás siendo el propietario de los derechos de autor, aún así llegarás al mercado primero.

Te recomiendo que te olvides de eso.

0

Esto es inútil. Siempre hay alguien más inteligente que usted y, por lo tanto, podrán realizar una ingeniería inversa de su ofuscación.

1

Ni siquiera te molestes. Si su código realmente "hace cosas maravillosas", tenga la seguridad de que será pirateado. Y sea solo por curiosidad.

2

Alguien siempre será capaz de entender y resolver su código. Diablos, si tenía 0 maneras de llegar al código, incluso el solo uso del sistema es suficiente para que alguien pueda replicar el proceso.

Ejemplo: tomo una jarra de agua y la vuelvo a verter en la taza, mientras mi espalda está hacia otra persona. Esta otra persona sabe que el agua y la gravedad son asombrosas para hacer que las cosas caigan en otros contenedores, por lo que luego pueden desarrollar un proceso para levantar una jarra y dejar que la gravedad (llamada API) funcione a su favor. Es posible que no sepan exactamente qué ángulo usó en su antebrazo y las técnicas de agarre súper astuto que usó, pero pueden replicar el mismo proceso y mejorarlo con el tiempo.

tl; dr: No se puede proteger el código.

3

Una vez que tenga el conocimiento y la experiencia para escribir dicha base de código, le quedará claro que la ofuscación está destinada a evitar la infracción ocasional de la propiedad intelectual.

Alguien que quiera conocer su código va a conocer su código.

Si se convierte en una cuestión de pérdida monetaria, los tribunales son su protección.

Así es como funciona.

+0

Sí, tendrías que dedicar todo tu vida para hackear realmente poder combatir el vudú que continúa. – ChaosPandion

1

No hay una forma 100% de proteger su código de ingeniería inversa. ¿De qué idioma estamos hablando? Si esto es C/C++, entonces es bastante difícil realizar ingeniería inversa, más se podría despojar de la información de depuración, etc. Pero si esto es por ejemplo Java, incluso si se ofusca el código, hay algunas herramientas geniales (como JAD) eso revelará mucho de tu trabajo de todos modos.

A pesar de todo esto, creo que deberías intentar cambiar tu actitud. Las grandes compañías pagan mucho dinero por soluciones simples y parece que hoy en día el servicio es lo más importante, no el software (de ahí el éxito de las compañías basadas en software abierto). Por lo tanto, si tiene un excelente software, no se asuste de que alguien pueda robarlo, más bien piense cómo venderlo bien.

2

Lo que hay que hacer es inventar cosas aún más maravillosas, mientras que la competencia está realizando ingeniería inversa con sus cosas actuales. Se llama competir a través de la innovación.

0

Por lo general, alguien lo suficientemente inteligente como para hackear tu código y usarlo de manera significativa es lo suficientemente inteligente como para hacerlo por sí mismo, y probablemente piense que puede hacerlo mejor que tú, para que no te importe robar tus cosas .

No se preocupe por las personas que pueden hackear su código pero no hacer un uso significativo de él. Si has hecho un buen trabajo, esto solo puede reforzar la calidad del trabajo que has realizado (piensa en todos los imitadores de teléfono con pantalla táctil).

2

no soy un abogado

si está realmente preocupado por eso, hasta el punto de que está dispuesto a invertir dinero en ella, no te proteger el código (más allá de algo razonable como la ofuscación o cifrado), sino patente su idea y su arte. Entonces, si alguien lo toma, realiza una ingeniería inversa y realiza un mejor proceso basado en el tuyo, tienes bases legales para obtener tu dinero.

Hay toneladas cosas que tendrá que hacer, incluyendo probar que tomaron su idea (que no es fácil), pero si esta es la solución al hambre mundial y todos los problemas de las humanidades es lo que hay que hacer.

Ahora para la inconveniente, que adivinará, y es probable que haya un 90% en lo correcto de que su método es:

  1. no patentables, por diversas razones (Me quedé sorprendido por el número de ideas ya patentados, y qué tan difícil fue identificar el arte original)
  2. No nuevo, o único (es decir,ya se establece el arte para ello)
  3. No vale la pena patentar porque el gasto lejos outways los beneficios

abogado Una dirección IP se puede decir con seguridad, y el costo de una consulta no es mucho. En general, será más económico consultar con ellos y luego invertir mucho tiempo ocultando el código.

Buena suerte.

1

¿Hay algún software que encripte el código de software, que hará que la depuración, resolución de problemas y la comprensión de cómo funciona el código sea prácticamente imposible? y sin embargo, se ejecuta como de costumbre? para que el desarrollador pueda tener tranquilidad?

Esta es la mentalidad totalmente equivocada de la OMI. ¿Qué pasa si te golpea un autobús? ¿Su empresa se declara en quiebra? ¿Todos tus datos son destruidos en un incendio? Para cada uno de sus clientes, el valor de su inversión en su software disminuirá y, finalmente, llegará a cero, ya que el software no se puede desarrollar, ni solucionar, más allá sin usted. He visto así que desperdicio mucho dinero de esa manera, creo que es un modelo de negocio horrible.

Me gano el pan con hacer un software yo mismo, así que sé las dificultades de ganarse la vida con él. Aún así, la ofuscación no puede ser el camino a seguir hoy en día. Imponga estrictos acuerdos de licencia a sus clientes, asómbalos para que ni siquiera piensen en redistribuir el software, pero déjalo abierto.

0

Van a aplicar ingeniería inversa a su código. Nada puede detenerlos. Lo único que puedes hacer es hacerlo más difícil. Esto va desde ofuscar el código que es "abierto" de forma hereditaria, como PHP y Javascript, hasta ensuciar el código con una gran carga de auto-modificación.

5

una vez que alguien toma un vistazo al código , ellos lo entenderán muy fácilmente y pueden construir fácilmente hacia arriba sí mismos.

Así que no le dé a nadie el código fuente.

Si quiero vender este producto, lo es la garantía de que alguien mucho más inteligente que yo técnicas de ingeniería inversa todo el asunto y llegar a producto mejor?

(a) Para comenzar a venderlo ahora y capturar el mercado. La ingeniería inversa lleva tiempo, durante la cual está capturando el mercado y la 'capacidad mental'. (b) Incluya una disposición en su acuerdo de licencia que prohíba la ingeniería inversa. (c) Asegúrese de que todos los que obtienen el producto firmen el acuerdo.

En este momento estoy pensando en fragmentar todo el código. Agregando muchos códigos redundantes y toneladas de comentarios.

Eso solo tiene sentido si se va a distribuir el código fuente. En ese caso, nadie necesita siquiera realizar ingeniería inversa. Ellos tienen tu código fuente. No se lo den.

¿Hay algún software ...

Hay un montón de software que pretende hacer este trabajo. Sin embargo, es una solución técnica a un problema comercial. Todo el software puede ser de ingeniería inversa, porque en algún momento todo tiene que ser descifrado y desenfocado hasta el punto en que la CPU lo entienda. En ese punto, es esencialmente texto sin formato. Por lo tanto, no es posible formalmente una solución técnica (salvo algo así como el código que se ejecuta en un HSM a prueba de manipulaciones).

Agregaré que hay otro mecanismo comercial que puede usar para defenderse contra la pérdida de negocios, que es de lo que se trata: precio. Haga que el precio sea tan alto que los licenciatarios valorarán su copia y no permitirán que se inspeccione, o lo harán tan bajo que la ingeniería inversa es inviable en términos de costos; o hazlo gratis y gana tu dinero en el contrato de soporte.

0

En muchos sentidos, creo, lo que hace que una pieza de software valioso, no es el loco avance tecnológico que proporciona, sino más bien las cosas que creemos que podría pensar en como siendo superior a la pieza de software en sí. Como el hecho de que estarás allí para apoyarlo. O que se proporciona como un servicio web y usted estará allí para asegurarse de que el servidor se está ejecutando. O que es una comunidad y estarás allí para moderar y construir la comunidad.

Si bien puede ser realmente vendiendo código, el valor que tiene su código no es intrínseco al código en sí, sino que se deriva de las características y el ecosistema que rodea su código.

Cuestiones relacionadas