Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¿Por qué no puedo obtener el código fuente del software?

¿Por qué no puedo obtener el código fuente del software?

El código fuente del software compilado es casi imposible de obtener. Podemos explicar la razón por la que es teóricamente imposible obtener el código fuente de la siguiente manera:

El código fuente debe compilarse y luego convertirse en una serie. de 0 y 1, esta serie de 0 y 1 está empaquetada en lo que llamamos un archivo ejecutable, que es lo que normalmente se usa en el software.

Bien, desea rastrear el código fuente a través del archivo ejecutable (es decir, la cadena de 0 y 1), lo cual es casi imposible porque el código fuente del lenguaje de alto nivel es diferente del final generó 0 y 1. No es una relación uno a uno. Los lenguajes de alto nivel deben convertirse primero a lenguaje ensamblador y luego el lenguaje ensamblador a 0 y 1. Existe una correspondencia uno a uno entre el lenguaje ensamblador y 0 y 1, pero este no es necesariamente el caso entre los lenguajes de alto nivel y el lenguaje ensamblador.

Incluso unas pocas frases del mismo código de lenguaje de alto nivel pueden ser código ensamblador completamente diferente en diferentes compiladores. Incluso las diferencias en algunas palabras clave o diferencias en variables pueden producir códigos ensambladores diferentes para la misma lógica.

Por lo tanto, la ingeniería inversa de archivos ejecutables binarios 0,1 y lenguajes de alto nivel es factible en teoría, pero no en la práctica porque la carga de trabajo es demasiado grande. Al igual que en el software a gran escala, unos pocos gigabytes de ceros y unos equivalen a millones de líneas. Incluso si los programadores de todo el mundo trabajan juntos para revertir el código fuente, no saben cuántos años llevará revertir completamente el código fuente. .

¿A qué solemos llamar ingeniería inversa?

Bueno, de hecho, el software se puede revertir, pero no el código fuente real, sino el código ensamblador del software. Sin embargo, cabe señalar que el código ensamblador no puede convertirse en el código fuente de este software hasta cierto punto, porque la cantidad de código ensamblador es extremadamente grande y no es legible. Un código fuente ordinario en un lenguaje de alto nivel puede generar docenas de líneas de ensamblador. código. Entonces la cantidad de código ensamblador es enorme.

Al mismo tiempo, el código ensamblador casi no tiene estructura, es decir, incluso si obtienes el código ensamblador de un software, solo puedes cambiar ligeramente alguna lógica clave, como la lógica de registro (por ejemplo). craqueo), etc. Pero si desea cambiar la función del software mediante código ensamblador, es casi imposible. Por lo tanto, el código ensamblador no se puede utilizar para código abierto. Si se hace público, la gente no tendrá la energía para leerlo.

div>