¿Cómo las empresas como Adobe o Autodesk le impiden ver el código detrás de su software?

Gracias por A2A.

Creo que está asumiendo entre la programación del intérprete (por ejemplo, BASIC) y la programación compilada (por ejemplo, código de ensamblaje o máquina).

En la mayoría de las máquinas antiguas, existía alguna versión de BASIC que era LISTable y, por lo tanto, modificable por el usuario.

Si aún escribe en forma de BASIC (o C ++), eso se procesa a través de un compilador que convierte el código fuente en algo directamente procesable por máquina o, en sistemas operativos modernos, llama al sistema para ejecutar código de biblioteca preexistente. Cualquier compilador decente procesará el código fuente relevante , descartando cualquier material de comentario.

Si conoce el idioma en el que se escribió el Código fuente, entonces un “descompilador” podría proporcionarle una representación razonable del Código fuente original, pero no habría nada en ese “nuevo” Código fuente que le dé indicaciones de dónde comenzaron las subrutinas y detenido, apilar puntos u otros nombres de variables que se utilizaron en la versión original.

Por ejemplo: lo que originalmente se escribió como str.ProgramName = “Adobe Premiere 6.1”
podría volver a usted como ûŽa = “Adobe Premiere 6.1”

Ese es solo un ejemplo simple pero, si cada nombre de variable se ha eliminado a tres o cuatro caracteres o dígitos, pasará un tiempo terriblemente largo haciendo “Buscar y reemplazar” para convertir esas etiquetas de identificación en algo comprensible para los humanos e, incluso entonces, no habrá información de comentarios que le indique el propósito de líneas específicas de código.

Además, dado que el Código fuente para aplicaciones modernas tan grandes como Premiere puede estar en millones de líneas, habiendo sido desarrollado por un equipo completo de escritores de código, generalmente no vale la pena el esfuerzo.

Considere una instalación completamente nueva de Windows 10 que ocupará aproximadamente 3.5 GB de espacio en el HDD. En algún lugar de un servidor en Microsoft estará el código fuente para cada archivo desde exe a dll. El equipo de soporte de Windows 10 podrá acceder a esos archivos. Todos los archivos contendrán comentarios internos, puntos de detención de rastreo y otros identificadores para ayudar a modificar cualquier archivo en particular debido a errores o fallas de seguridad. Una vez que la actualización se haya escrito y probado, ese archivo se enviará a través del compilador, que eliminará toda esa información adicional y le enviará la versión ejecutable en el próximo ciclo de actualización.

En la comunidad Linux (código abierto), las aplicaciones generalmente se comparten solo en el código fuente, y el usuario ejecuta el proceso de compilación para crear un archivo ejecutable. Es por eso que Linux y sus aplicaciones están relativamente libres de errores. Con millones de ojos mirando el Código Fuente y sugiriendo modificaciones o actualizaciones, cualquier falla generalmente se detecta y corrige mucho más rápidamente.

Si alguna vez logramos un sistema operativo omnipresente como LCARS de Star Trek que es capaz de múltiples plataformas, probablemente se derivará del enfoque de código abierto. Al igual que Android está basado en Linux y se encuentra en la mayoría de los teléfonos celulares y tabletas con iOS tomando la mayor parte de la holgura.

Las compañías como adobe y autodesk usan lenguajes compilados como C ++ muy a menudo, y en esas compilaciones es más o menos un proceso de conversión de código fuente de alto nivel a lenguaje máquina. No quedan rastros del código fuente original, y para fines prácticos no se puede reconstruir automáticamente.

Dado que su software también es ENORME, no es factible reconstruir la fuente manualmente.

Esto es bastante diferente de los lenguajes como C #, donde es posible reconstruir una buena parte del programa original utilizando utilidades como IlSPy.

De cualquier manera, significa que, como un simple mortal que no trabaja para Autodesk, realmente no puede ver el código por defecto.

Al enviar solo el código compilado “eliminado”, no la versión de depuración.

Una compilación de software de depuración incluirá, efectivamente, el código fuente completo para que los depuradores simbólicos puedan proporcionar la depuración a nivel de fuente.

Una compilación de producción , por otro lado, contiene solo el código compilado, es decir, las instrucciones de la máquina que podrían desmontarse en MOV BX,AX pero no descompilarse en MAGIC = NOT_MAGIC; y esto hace que la ingeniería inversa de cualquier aplicación incluso moderadamente grande sea inviable.

Incluso si pudiera descompilar el código, no sería muy útil ya que se perderían los nombres más importantes de funciones y variables. Mi primer empleador tuvo que obtener una licencia fuente de Unix (versión 7, a mediados de la década de 1980) y lo que obtuvimos de Bell Labs tenía todos los comentarios eliminados y los nombres se habían convertido en sopa de letras sin ningún significado. Para todos los fines prácticos era inútil.

Si por código te refieres al código fuente, la respuesta es que simplemente no lo envían con el producto. Si te refieres al código de máquina, sus productos son tan grandes y complejos que tratar de trabajar hacia atrás desde el lenguaje de máquina hasta el código fuente original es demasiado difícil para ser práctico.

No lo hacen … El tiempo que tomaría para imitarlos será más largo y más costoso que simplemente comprar su producto. Y si codifica un clon, obviamente pueden responderle por robar sus herramientas y conceptos.
El esfuerzo para hacer esto es más esfuerzo que trabajar con el producto.

Ellos no … simplemente te faltan las herramientas para ver el código.

Honestamente, no sé qué ensambladores usan … pero no soy un programador, así que la mayoría de los que puedo hablar es teórico.

Muchas de estas aplicaciones residen principalmente en la nube … lo que dificulta aún más.