¿Cómo le impide el software instalado localmente ver o acceder al código fuente?

La compilación del código fuente convierte el código fuente en código máquina. El código Mavhine es básicamente un montón de instrucciones que la CPU entiende. Una cosa importante para recordar es que las instrucciones de la máquina están en un nivel mucho más bajo. Lo que eso significa es que debe proporcionar más instrucciones a la máquina. Entonces, por ejemplo, algo como a = a + b se traducirá a

  Busque la dirección de la variable A y almacene en R1
 Busque la dirección para la variable B y guárdela en R2
 Busque el contenido de la dirección almacenada en R1 y almacénelo en R4
 Busque el contenido de la dirección almacenada en R2 y almacénelo en R5
 Agregue R4 y R5 y guárdelo en R3
 Ponga R3 en la dirección almacenada en R1

Como puede ver, el código se alarga, y esto es solo una simple adición. Cuando agrega bucles, y funciones, y punteros de función, y varios tipos de operadores, el código de máquina comienza a ser cada vez más complicado.

Además de eso, la traducción al código de máquina pierde nombres de variables y funciones. Gran parte de nuestra comprensión del código proviene de nombres de funciones y variables. Si tiene una función bien nombrada, sabe lo que hace del nombre. Si no lo hace, debe realizar ingeniería inversa del código

Entonces, el código está realmente ofuscado. no oculto


Solía ​​haber un momento en que las personas escribían código en el código de máquina, y solían poder leer el código de máquina. Por ejemplo, Linus Torvald (el inventor de Linux) solía escribir en código máquina cuando era joven (o en sus propias palabras, “como un hombre”: D). Hoy, sin embargo, debido a la explosión de los lenguajes de orden superior, el conjunto de instrucciones para la máquina y las técnicas que dependen de la generación de código de máquina en tiempo de ejecución, la tarea se ha vuelto exponencialmente difícil.

Probablemente pueda leer el código ahora, si es un súper genio y extremadamente talentoso. Probablemente no tendrá un incentivo porque tomará menos esfuerzo hacer ingeniería inversa de la aplicación jugando con ella, que hacer ingeniería inversa del código.

Normalmente, el código almacenado localmente en su computadora se compila en código de máquina y se almacena en un ejecutable binario. En este modelo, ninguno del código fuente original está realmente presente. Un compilador realiza tareas de código desde un lenguaje de programación y lo convierte en, en este caso, código de máquina nativo entendido por su procesador.

Podrías tomar este código y usar un descompilador. Sin embargo, estos programas no pueden hacer un gran trabajo al revelar el código fuente original porque hay una gran cantidad de información perdida en el proceso de compilación. Especialmente si está escrito en un lenguaje de alto nivel.

Además de lo que se ha dicho sobre esto, como desarrollador de SO también puedo agregar que incluso eliminamos los símbolos antes del envío. De esta manera, incluso si usa un depurador y un código de rastreo, no podrá entender las cosas tan fácilmente. Dicho esto, no es a prueba de tontos.

Incluso IBM internamente tiene una política que restringe el uso de comandos de creación de perfiles a partir de los cuales uno puede descubrir algoritmos patentados, necesitamos dos capas de aprobaciones y un montón de acuerdos a los que adherirnos antes de usar herramientas como esta.